2010-04-04 19 views
8

मैं एंटिटी फ्रेमवर्क पढ़ रहा हूं और लोग रो रहे थे क्यों आलसी लोडिंग या कुछ नहीं था। असल में मैं आलसी लोडिंग के बारे में चीजें खोज रहा हूं और अब मुझे पता है कि यह क्या है: यह एक डिज़ाइन पैटर्न है जो हमें वास्तव में आवश्यक होने पर वस्तुओं को लोड करने की अनुमति देता है।लागू आलसी लोडिंग बनाम आलसी लोडिंग

लेकिन बीच स्पष्ट लेज़ी लोड हो रहा है और अंतर्निहित लेज़ी लोड हो रहा है क्या अंतर है।

अग्रिम धन्यवाद ...

उत्तर

5

यदि आप उदा। ऑर्डररो पर एक ऑर्डर "ऑर्डररो" और एक अन्य इकाई "ऑर्डर" है, ऑर्डररो पर नेविगेशन प्रॉपर्टी होगी जो ऑर्डर को इंगित करती है।

वर्तमान में इकाई की रूपरेखा केवल स्पष्ट लेज़ी लोड जिसका अर्थ है कि यदि आप OrderRows के एक नंबर पुनर्प्राप्त और आदेश पर कुछ जाँच करना चाहते है आप की जरूरत का समर्थन करता है के लिए:

// or is an OrderRow 
if(!or.Order.IsLoaded) 
    or.Order.Load() 

or.Order.Cancel(); 

लेकिन यदि आप निहित है आलसी लोडिंग आपको IsLoaded चेक की आवश्यकता नहीं है, यह स्वचालित रूप से किया जाएगा, आप सीधे or.Order.Cancel() कर सकते हैं और आवश्यकता होने पर ऑर्डर स्वचालित रूप से लोड हो जाएगा। इस प्रकार linq-to-sql काम करता है और यह कुछ टाइपिंग और गलतियों के लिए कुछ जोखिम बचाता है। दूसरी तरफ यह यह स्पष्ट करता है कि डेटाबेस एक्सेस कब और कैसे किया जाएगा। निहित भार के साथ अक्षम कोड लिखना आसान है जो प्रत्येक पंक्ति के लिए एक तालिका से प्राप्त करने के लिए एक डीबी राउंडट्रिप बनाता है।

+0

तो क्या आप संबंधित तालिकाओं के लिए स्पष्ट आलसी लोडिंग की आवश्यकता है? – Tarik

+0

नहीं, लागू लोडिंग का मतलब है कि संबंधित तालिकाओं को पृष्ठभूमि में स्वचालित रूप से लोड किया जाता है। –

+0

.. अग्रभूमि में अधिक पसंद है। निष्पादन तब तक अवरुद्ध होगा जब तक इसे प्राप्त नहीं किया जाता है। –

4

स्पष्ट मतलब है कि आप स्पष्ट रूप से आलसी लोड करने के लिए अपने कोड लिखा था।

लागू का मतलब है कि ढांचा (इस मामले में ईएफ) आलसी लोडिंग स्वयं करता है, चाहे आप चाहते हैं या नहीं।

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