2012-08-22 14 views
8

मैं कोड फर्स्ट के साथ ईएफ 5 का उपयोग कर रहा हूं। मेरे पास एक वर्ग है कि मैं हमेशा कुछ गुणों को लोड करना चाहता हूं। मैं आभासी कीवर्ड निकाला गया, लेकिन यह उत्सुक लोड हो रहा है नहीं है: आलसी लोड हो रहा है बंद करने के लिए, यह ऑटो उत्सुक लोड सही नहीं होगा द्वाराईएफ कोड सबसे पहले उत्सुक लोडिंग

public class Person 
{ 
    public ICollection<Email> Emails { get; set; } 
    public Profile Profile {get;set;} 
} 

तो? यदि हां, तो मैं शामिल() का उपयोग किए बिना कैसे संग्रहीत करूं?

धन्यवाद!

उत्तर

18

नहीं, virtual कीवर्ड को हटाकर आलसी लोडिंग को बंद करना स्वचालित रूप से उत्सुक लोडिंग को सक्षम नहीं करेगा। आप संबंधित Entity या Collection तो जैसे Include करने के लिए है:

var personWithProfile = ctx.People.Include(x => x.Profile).First(); 
var personWithProfileAndEmails = ctx.People. 
              .Include(x => x.Profile) 
              .Include(x => x.Emails) 
              .First(); 

यह ADO.NET टीम ब्लॉग से एक महान पढ़ा है: http://blogs.msdn.com/b/adonet/archive/2011/01/31/using-dbcontext-in-ef-feature-ctp5-part-6-loading-related-entities.aspx

+0

लिंक के लिए धन्यवाद और यह बहुत उपयोगी है। मैं शामिल आदेश के बारे में पता हूँ। लेकिन पीओसीओ कक्षा परिभाषा (या मैपिंग फाइल) में उत्सुक लोडिंग को मजबूर करने का कोई तरीका नहीं है? – Calvin

+1

नहीं, डेटा को लोड करने के लिए आप स्पष्ट रूप से ईएफ को बताना चाहते हैं। यदि आप नहीं करते हैं और ईएफ में सिर्फ सभी संबंधित इकाइयां शामिल हैं तो प्रमुख प्रदर्शन मुद्दे होंगे। अनिवार्य रूप से, प्रत्येक शामिल कथन एसक्यूएल 'आंतरिक जॉइन' में अनुवाद करता है और क्वेरी भी शामिल तालिका में प्रत्येक कॉलम का चयन करती है। – Paul

+0

स्पष्टीकरण के लिए धन्यवाद! – Calvin

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