यह आवश्यक नहीं किया गया है ...
के अन्य जवाब यहाँ के लिए धन्यवाद, मैं देखता हूँ कि एफई कोर भी लेज़ी लोड हो रहा है का समर्थन नहीं करता ... यह बहुत आभासी कुंजी शब्द है ... कोर में बेकार
लेकिन आम तौर पर:
1. यदि आप अपनी संपत्ति आभासी घोषित:
आपका वर्चुअल संपत्ति (डिफ़ॉल्ट रूप से) अभी लोड नहीं किया जाएगा जब मुख्य उद्देश्य से क्वेरी। यह केवल डेटाबेस से पीछे हट जाएगा यदि आप इसे एक्सेस करने का प्रयास करते हैं, या इसके किसी भी घटक को एक्सेस करते हैं।
और इसे आलसी लोडिंग कहा जाता है।
2. यदि आप इसे गैर आभासी घोषित:
आपकी संपत्ति (डिफ़ॉल्ट रूप से) सही अपने मुख्य इकाई में अन्य सभी संपत्ति के साथ-साथ दूर लोड किया जाएगा। इसका मतलब है कि आपकी संपत्ति एक्सेस करने के लिए तैयार होगी: इसे पहले से ही पुनः प्राप्त कर लिया गया है। इकाई को फिर से डेटाबेस से पूछताछ नहीं करनी होगी क्योंकि आप इस संपत्ति तक पहुंचते हैं।
इसे उत्सुकता से लोडिंग कहा जाता है।
मेरे राय:
अधिक अक्सर मैं बेसब्री से (गैर आभासी) क्योंकि ज्यादातर समय, मैं हर इकाई के हर संपत्ति की जरूरत है वापस (में तेजी से क्वेरी करने के लिए बिना साथ प्रयोग की जाने वाली लोड हो रहा है चुन
यदि आप वास्तव में सबकुछ जल्दी चाहते हैं) लेकिन यदि आप इस संपत्ति को केवल थोड़ी देर में एक्सेस करते हैं (आप कुछ भी सूचीबद्ध नहीं करते हैं) और आप अक्सर बाकी की जानकारी चाहते हैं तो बाकी की सूचनाएं इसे आभासी बनाती हैं, इसलिए यह संपत्ति धीमी नहीं होगी केवल कुछ पहुंच के लिए शेष क्वेरी के नीचे।
आशा यह स्पष्ट था ...
Exemples:
मैं कहाँ आभासी (बेसब्री) का उपयोग नहीं होगा:
:
foreach(var line in query)
{
var v = line.NotVirtual; // I access the property for every line
}
मैं कहाँ आभासी या आलसी लोड हो रहा है प्रयोग करेंगे
foreach(var line in query)
{
if(line.ID == 509) // because of this condition
var v = line.Virtual; // I access the property only once in a while
}
एक आखिरी बात:
यदि आप डेटाबेस की 1 000 से अधिक पंक्तियों से पूछताछ नहीं करते हैं, तो जो भी आप चुनते हैं उसका कोई बड़ा प्रभाव नहीं पड़ेगा। इसके अलावा, आप इन संपत्ति आभासी घोषणा कर सकते हैं और आप दूसरी तरह के आसपास का परीक्षण करना चाहते हैं, तो आप सिर्फ यह करने के लिए है:
context.LazyLoadingEnabled = false;
यह आभासी प्रभाव रद्द हो जाएगा।
संपादित
एफई के नए संस्करणों के लिए:
WhateverEntities db = new WhateverEntities()
db.Configuration.LazyLoadingEnabled = false;
यदि यह कोई विशेष अर्थ नहीं है, क्यों पाड़ आभासी के साथ हर नौवहन संपत्ति उत्पन्न करता है? –
@CamiloTerevinto बस मामले में? डिफ़ॉल्ट रूप से? यह वास्तव में कोई फर्क नहीं पड़ता। –
सुंदर दिलचस्प, वास्तव में, मुझे पता है कि वे डिफ़ॉल्ट आभासी एफई कोर के लिए, मुझे नहीं लगता है तो –