पर विचार करेंइकाई फ्रेमवर्क में, आलसी लोडिंग एक-से-शून्य-या-एक नेविगेशन प्रॉपर्टी के लिए क्यों काम नहीं कर रही है?
class Person
{
public int PersonId { get; set; }
public virtual Address Address { get; set; }
}
class Address
{
public int PersonId { get; set; }
public virtual Person Person { get; set; }
}
जहां केवल कुछ व्यक्तियों कोई पता है के रूप में परिभाषित Person
और Address
कक्षाएं, लेकिन सभी के पते एक व्यक्ति की है। यह एक one-to-zero-or-one relationship है, इसलिए मैं
modelBuilder.Entity<Address>()
.HasKey(a => a.PersonId)
.HasRequired(a => a.Person)
.WithOptional(a => a.Address);
के रूप में यह कॉन्फ़िगर अब, मेरी कोड में निम्नलिखित दृष्टिकोण (उत्सुक लोड हो रहा है) पूरी तरह से ठीक काम करता है।
var person = context.Person
.Include(a => a.Address)
.Single(a => a.PersonId == 123);
var address = person.Address; // address != null (correct)
हालांकि, निम्नलिखित दृष्टिकोण (आलसी लोडिंग) नहीं है।
var person = context.Person
.Single(a => a.PersonId == 123);
var address = person.Address; // address == null (incorrect)
इसके अलावा, मैं एसक्यूएल प्रोफाइलर को झुका और मैं देख सकता हूँ कि एफई भी दूसरे मामले में पता आलसी लोड करने का प्रयास नहीं कर रहा है - यह सिर्फ अशक्त देता है।
मैं किसी दस्तावेज़ को ढूंढने में असमर्थ रहा हूं जो कहता है कि ईएफ आलसी लोड नहीं करता है-एक-शून्य-या-एक नेविगेशन गुण। क्या यह डिज़ाइन द्वारा है, क्या यह एक बग है, या क्या मैं कुछ गलत कर रहा हूं?
मैंने एंटिटी फ्रेमवर्क 5 और एंटिटी फ्रेमवर्क 6 अल्फा 3 दोनों के साथ इसका परीक्षण किया और उसी परिणाम प्राप्त किए।
मेरे लिए काम करता है। क्या आप निश्चित हैं कि 'ProxyCreationEnabled' और' LazyLoadingEnabled' संदर्भ के लिए सच हैं? –