6

फू का शीर्षक है।
बार संदर्भ फू। मेरे पास बार्स के साथ एक संग्रह है।
मुझे Foo.Title के साथ एक संग्रह की आवश्यकता है।एन + 1 समस्या का चयन करें

यदि मेरे पास संग्रह में 10 बार हैं, तो मैं डीबी 10 बार कॉल करूंगा।

bars.Select (x => x.Foo.Title)

फिलहाल इस (NHibernate Linq और मैं का उपयोग कर इसे छोड़ नहीं करना चाहती) बार संग्रह प्राप्त करता है।

var q = from b in Session.Linq<Bar>() 
       where ... 
       select b; 

मैंने पढ़ा कि Ayende about this कहता है।
एक और संबंधित question
documentation का थोड़ा सा।
और दूसरा संबंधित blog post
शायद this मदद कर सकते हैं?
this के बारे में क्या?
शायद MultiQuery मुझे क्या चाहिए? :/

लेकिन मैं अभी भी उचित समाधान में इसे संकलित नहीं कर सकता।

चयन एन + 1 से कैसे बचें?

उत्तर

3

यह काम नहीं किया:

var q = from b in Session.Linq<Bar>().Expand("Foo.Title") 
       where ... 
       select b; 

लेकिन इस तरह के एक मदद की:

var q = from b in Session.Linq<Bar>().Expand("Foo") 
       where ... 
       select b; 

अब ..लेकिन बात यह है कि भंडार का उपयोग करने के पता नहीं है कि यह कम महत्वपूर्ण चीज़ें भी लोड हो रहा है जा रहा है।
कोई विचार यह कैसे अधिक स्पष्ट बनाने के लिए?

एक विचार FindBarsWithFoos() पर नाम बदलने के लिए है।

कम से कम यह काम करता है।

संबंधित मुद्दे