2011-05-09 5 views
30

के साथ समस्या मैं linq का उपयोग NHibernate (Fluent NHibernate के साथ) करने का प्रयास कर रहा हूं लेकिन मुझे linq क्वेरी के साथ समस्याएं हैं। हर मैं कोशिश यह निष्पादित करने के लिए मैं यह संदेश प्राप्त:linq क्वेरी

"विधि 'get_IsReadOnlyInitialized' प्रकार में 'NHibernate.Linq.Util.DetachedCriteriaAdapter' विधानसभा से 'NHibernate.Linq, संस्करण = 1.1.0.1001 , संस्कृति = तटस्थ, PublicKeyToken = अशक्त 'एक कार्यान्वयन नहीं है। "

किसी को भी पता है कि कैसे इस समस्या को ठीक करने के लिए? मैंने मॉडल संदर्भ के साथ समाधान फॉर्म this page के साथ प्रयास किया लेकिन इससे मदद नहीं मिली।

इस कोड है:

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

सब कुछ ठीक है अगर मैं जहां भाग का उपयोग नहीं करते लेकिन अगर मैं इसका इस्तेमाल मैं इस त्रुटि मिलती है। मुझे लगता है कि समस्या NHibernate.Linq.dll

+0

आपको हमेशा परेशानी देने वाले कोड को पोस्ट करना एक अच्छा विचार है। क्या आप यह कर सकते हैं? – csano

+0

क्या यह निबर्ननेट 2 और NHibernate.Linq प्रोजेक्ट का उपयोग कर रहा है? क्या आपने निबर्ननेट 3 में इसका परीक्षण करने की कोशिश की है, अगर मुझे सही याद है कि लिंक समर्थन का निर्माण किया जाना चाहिए। – Tomas

+0

नहीं, मेरे पास एनएचबीर्नेट 3.1.0.4000 है, फ्लुएंट हाइबरनेट 1.2.0.712 और NHibernate.Linq 1.0। यह अंदर नहीं बनाया गया है। मुझे इसे स्वतंत्र रूप से जोड़ना पड़ा। – Athina

उत्तर

54

आप चाहिए नहीं उपयोग NHibernate.Linq.dll NHibernate 3.0 के साथ! एनएचबीर्नेट 3.0 में लिंक शामिल है (पुराने एक्सटेंशन डीएल की तुलना में कहीं बेहतर संस्करण है), आपको using NHibernate.Linq; जोड़ने की आवश्यकता है और session.Linq<T>() के बजाय session.Query<T>() का उपयोग करें।

+1

आपको बहुत बहुत धन्यवाद! :) – Athina

+0

मेरा दिन बचाया! बहुत बहुत धन्यवाद ! –

+1

'क्वेरीऑप्शन' और 'NHibernateQueryProvider' के बजाय आप क्या उपयोग करते हैं? – Maslow

0

जहां तक ​​मैं देख सकता हूं कि आप तुलना नहीं कर रहे हैं, लेकिन टेक्स्ट असाइन कर रहे हैं।

यह = की जगह में == नहीं होना चाहिए:

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

मेरे पास कोड में == है। मैंने कोड लिखकर गलती की। – Athina