2011-05-09 37 views
30

NHIbernate (Fluent NHibernate ile) linq kullanmaya çalışıyorum ancak linq sorgusunda sorun yaşıyorum. Ben çalışsam bu mesajı almak çalıştırmak için:Linq sorgusuyla ilgili sorun

"Yöntem 'get_IsReadOnlyInitialized' tipinde 'NHibernate.Linq.Util.DetachedCriteriaAdapter' aksamından 'NHibernate.Linq, Versiyon = 1.1.0.1001 Kültür = nötr, PublicKeyToken = null' bir uygulaması olmaması. "

herkes bu sorunun nasıl biliyor mu? Model bağlamıyla this page çözüm formunu kullanarak denedim, ancak yardımcı olmadı. Ben bölümünü kullanmak istemiyorsanız

using(var session = NHibernateHelper.OpenSession()) 
{ 
var informations = (from i in session<Information>() where i.Text=="some text" select i).ToList(); 
} 

Her şey gayet iyi ama bunu kullanırsanız bu hatayı alıyorum:

Bu

kodudur. Bence, karşılaştırma yapamadığınızı, ancak Metni atadığınızı görebildiğim kadarıyla, NHibernate.Linq.dll

+0

Size sorun veren kodu göndermek her zaman iyi bir fikirdir. Bunu yapabilir misin? – csano

+0

, Nhibernate 2 ve NHibernate.Linq projesini kullanıyor mu? Aynı şeyi Nhibernate 3'te denediniz mi? Doğru hatırlıyorsam Linq desteği oluşturulmalı. – Tomas

+0

Hayır, NHibernate 3.1.0.4000, FluentNHibernate 1.2.0.712 ve NHibernate.Linq 1.0 var. Yerleşik değil. Bağımsız olarak eklemeliydim. – Athina

cevap

54

You should değil kullanım NHibernate.Linq.dll NHibernate 3.0 ile! NHibernate 3.0, Linq dahil (eski uzantı dll'den çok daha iyi bir sürüm), sadece using NHibernate.Linq;'u eklemeniz ve session.Linq<T>() yerine session.Query<T>()'u kullanmanız gerekir.

+1

Çok teşekkür ederim! :) – Athina

+0

günümü kurtardı! çok teşekkürler ! –

+1

"QueryOptions" ve "NHibernateQueryProvider" yerine ne kullanıyorsunuz? – Maslow

0

sorununun olduğunu düşünüyorum.

o of = yerine == olmamalı:

using(var session = NHibernateHelper.OpenSession()) { 
var informations = (from i in session<Information>() where i.Text=="some text" select i).ToList(); 
} 
+0

Kodda == var. Kodu yazarak hata yaptım. – Athina