मैं सैद्धांतिक रूप से एक ही परिणाम लौटने इसी तरह के दो प्रश्न हैं:अप्रत्याशित Linq व्यवहार - ToList()
var requestNotWorking = SessionManagement.Db.Linq<Item>(false).Where(i =>
i.Group != null && i.Group.Id == methodParameter)
.ToList();
यह अनुरोध 0 आइटम देता है, भले ही यह एक वापस करने के लिए माना जाता है। निम्नलिखित उत्तरार्द्ध का एक पुनर्लेख है लेकिन ToList()
विधि पर कॉल के साथ। यह अनुरोध पहली क्वेरी में अपेक्षित आइटम को काम करता है और देता है!
var requestWorking = SessionManagement.Db.Linq<Item>(false).ToList().Where(i =>
i.Group != null && i.Group.Id == methodParameter).ToList();
नोट: SessionManagement.Db.Linq<Item>(false)
बूलियन विशेषता का निर्धारण करता है, तो अनुरोध कैश (सही) या डेटाबेस (गलत) में मार डाला जाना चाहिए के साथ एक सामान्य Linq NHibernate करने के लिए तरीका है। माना जाता है कि इस विधि में कुछ भी गलत नहीं है क्योंकि यह समाधान के कई अन्य हिस्सों में सामान्य रूप से काम करता है। आइटम का मानचित्रण कुछ भी नहीं है: कोई बैग और निम्न पैरामीटर: lazy="false" schema="dbo" mutable="false" polymorphism="explicit"
ऐसा क्यों है?
संपादित:
(Item.Group_ID is not null) and [email protected]',N'@p0 int',@p0=11768
requestWorking के उत्पन्न एसक्यूएल अनुरोध मोटे तौर पर एक select * from dbo.Items
आप Sql सर्वर का उपयोग कर रहे हैं, तो आप एसक्यूएल प्रोफाइलर चल रहा है, जबकि इन प्रश्नों के दोनों चल की कोशिश की? – nerdybeardo
i.Group दोनों के बीच अलग है। अलग-अलग प्रकार के संग्रहों पर समान रूप से नामित, लेकिन अलग-अलग अलग-अलग होते हैं। –
कृपया जेनरेट एसक्यूएल पोस्ट करें। एसक्यूएल क्या करता है और सी # अर्थशास्त्र क्या निर्देशित करता है के बीच एक अर्थपूर्ण अंतर है। LINQ समान अर्थशास्त्र का वादा नहीं करता है। – usr