के साथ उत्सुक लोडिंग बाल संग्रह मैं रूट इकाइयों को लोड करना चाहता हूं और अपने सभी बच्चे संग्रह और कुल सदस्यों को लोड करना चाहता हूं।NHibernate
FluentNHibernate में SetFetchMode
का उपयोग करने का प्रयास कर रहा है, लेकिन मुझे बाल संग्रह में डुप्लीकेट मिल रहा है क्योंकि मेरे पास 3 स्तरों की गहराई है। DistinctRootEntityResultTransformer
दुर्भाग्यवश केवल रूट डुप्लिकेशंस को हटा देता है।
return Session.CreateInvoiceBaseCriteria(query, archived)
.AddOrder(new Order(query.Order, query.OrderType == OrderType.ASC))
.SetFetchMode("States", FetchMode.Eager)
.SetFetchMode("Attestations", FetchMode.Eager)
.SetFetchMode("AttestationRequests", FetchMode.Eager)
.SetFetchMode("AttestationRequests.Reminders", FetchMode.Eager)
.SetResultTransformer(new DistinctRootEntityResultTransformer())
.List<Invoice>();
मैं बहु प्रश्नों या कुछ इसी तरह का उपयोग कर सकते हैं इस संग्रह करने के लिए?
इसके अलावा, क्या यह दृष्टिकोण डेटाबेस से अनावश्यक रूप से भारी परिणाम सेट में नहीं होगा?
कोई सुझाव?
वास्तव में एक अच्छा लेख है, लेकिन यह सुनिश्चित नहीं है कि मैं इसे अपनी स्थिति में लागू कर सकता हूं। एक विशिष्ट रूट इकाई को लोड करने के उत्सुकता के बारे में आलेख में वर्णित समाधान, मेरी समस्या यह है कि मैं रूट इकाइयों के संग्रह को लोड करना चाहता हूं। यदि मैं मल्टीक्रिटर का उपयोग करता हूं तो मुझे एक विशिष्ट इकाई निर्दिष्ट किए बिना सभी अलग-अलग प्रश्नों को जोड़ने का एक तरीका ढूंढना होगा। सुझाव कैसे बनाया जा सकता है? – Kristoffer
उस उदाहरण में केवल एक अतिरिक्त पदानुक्रम स्तर है, लेकिन कोई पोते नहीं है, जिसके लिए मल्टीक्वियर/मल्टीक्रिटरिया काफी बेकार प्रतीत होता है, क्योंकि बाद के प्रश्न पिछले प्रश्नों के परिणामों का संदर्भ नहीं दे सकते हैं (जैसे क्वेरी # 1: रूटऑब्जेक्ट्स आर का चयन करें बच्चों को लाने में शामिल हों कहां ...; प्रश्न # 2: पोते-पोते जी का चयन करें जहां सी में माता-पिता)। –