सवाल NHBernate के लिए लिंक और उत्सुक लोडिंग के fetch मोड


क्या libchmode को nhibernate के लिए linq का उपयोग कर एक से अधिक ऑब्जेक्ट के लिए उत्सुक करने का कोई तरीका है। ऐसा लगता है कि एक विस्तार विधि है जो मुझे केवल एक वस्तु सेट करने की अनुमति देती है। हालांकि मुझे इसे एक से अधिक ऑब्जेक्ट्स के लिए सेट करने की आवश्यकता है। क्या यह संभव है? धन्यवाद


44
2018-05-06 21:13


मूल




जवाब:


बस एक बार फिर इसका इस्तेमाल करें।

IList<Entity> GetDataFromDatabase()
{
    var query = session.Linq<Entity>();
    query.Expand("Property1");
    query.Expand("Property2");
    return query.ToList();
}

18
2018-05-06 23:57



या क्वेरी। एक्सपैंड ("संपत्ति 1, संपत्ति 2"); - Sprintstar
क्या यह एक विस्तार विधि है? इसे NHibernate.Linq v2.0.50727 में नहीं मिला। - Arnis Lapsa
मेरा मतलब है, संस्करण 1.0.0.0 - Arnis Lapsa
यह वहां है, NHibernate.Linq.Query <टी> पर - liammclennan


नया लिंक प्रदाता इसे थोड़ा अलग करता है:

var customers = session.Query<Customer>().Fetch(c => c.Orders).ToList();

यहां अधिक: http://mikehadlow.blogspot.com/2010/08/nhibernate-linq-eager-fetching.html


102
2017-08-06 11:22



अगर Orders अपने आप का एक उप वर्ग है, क्या यह उत्सुकता से लोड होगा? यदि नहीं - तो आप इसे लोड करने के लिए क्वेरी कैसे बदलेंगे? - ilans
पोते पाने के लिए: var customers = session.Query<Customer>() .FetchMany(c => c.Orders) .ThenFetchMany(o => o.OrderLines).ToList(); - ilans


जहां तक ​​मैं देख सकता हूं, यह समतुल्य नहीं है: SetFetchMode एक ऑब्जेक्ट पेड़ को हाइड्रेट करता है और विस्तार विधि एक कार्टशियन उत्पाद पुनर्प्राप्त करती है।


8
2017-09-20 20:23





Contiune में @Mike Hadlow उत्तर, अगले स्तर (पोते-बच्चों) को लाने के लिए आपको क्या करना है:

var customers = session.Query<Customer>() .FetchMany(c => c.Orders) .ThenFetchMany(o => o.OrderLines).ToList();


0
2017-12-15 13:15