IQueryable
को पूरा करने की कोशिश करते समय मुझे काफी अजीब अपवाद मिला है, मुझे NHibernate.Linq
फॉर्म मिला है। Antlr.Runtime.Tree.RewriteEmptyStreamException
का अपवाद सिर्फ plan b
बताता है, और कुछ भी नहीं। विस्तृत अपवाद http://pastebin.com/kR2dvDHdचलने पर संदेश "प्लान बी" के साथ एंटर अपवाद एनएचबीरनेट इकाइयों के IQueryable
में पाया जा सकता यहाँ कोड है कि एक अपवाद फेंकता है:
var matterExtractor = new MatterExtractor();
var InactiveMatters = matterExtractor.GetMattersAtStatus(General.InactiveMatterStatus);
Assert.IsNotNull(InactiveMatters); //OK
Assert.IsInstanceOfType(InactiveMatters, typeof (IQueryable<Matter>)); // OK
var MaterializedMatters = InactiveMatters.ToList(); //Exception is thrown
पदार्थ एक्सट्रैक्टर वर्ग follwing के रूप में सरल है:
public class MatterExtractor
{
public virtual IQueryable<Matter> GetMattersAtStatus(MatterStatus status)
{
return
(new NHibernateRepository.Repository<Matter>()).Where(
m => m.MatterStatusHistories.OrderByDescending(msh => msh.CreateTime).FirstOrDefault().MatterStatus == status);
}
}
NHibernateRepository.Repository<T>
एक उपयोगिता वर्ग कि IQueryable लागू करता है NHibernate.LINQ
NHibernate.Session
पर विस्तार विधियों के माध्यम से। http://pastebin.com/MgDxDg3Y
मुझे नहीं लगता कि यह अन्य परीक्षण है कि Matter
इकाई रन ठीक के साथ बातचीत के बाद से NHibernate मैपिंग से संबंधित है,: कुछ नहीं विशिष्ट यहाँ, लेकिन सिर्फ मामले में, यहाँ सूची है। शायद यह Where
खंड से संबंधित है, लेकिन मुझे समझ में नहीं आता कि उस खंड के साथ क्या गलत हो रहा है। मैं
OrderBy(msh => msh.CreateTime).LastOrDefault()
को
OrderByDescending(msh => msh.CreateTime).FirstOrDefault()
की जगह की कोशिश की है, लेकिन यह सिर्फ मेरे The LastResultOperator result operator is not current supported
कहा, तो मुझे लगता है NHibernate.Linq
सिर्फ LastOrDefault
नहीं रह सकते हैं।
कोई विचार plan b
का मतलब क्या है और मैं इसे कैसे काम कर सकता हूं?
के रूप में बेहतर तरीके से उपयुक्त हो सकते हैं, मैं आपकी समस्या को दोबारा कर सकता हूं, इसलिए मैं कहूंगा कि यह एनएचबीर्नेट में एक बग है, या तो इसे क्वेरी उत्पन्न करनी चाहिए या इसे एक समर्थित अपवाद फेंकना चाहिए। आपको एक बग रिपोर्ट जमा करनी चाहिए। एक वर्कअराउंड के रूप में आप क्लाइंट साइड पर अपनी पूरी क्वेरी का मूल्यांकन कर सकते हैं या 'रिपोजिटरी <मैटरस्टैटस हिस्ट्री>' ... – nemesv