2013-03-12 4 views
8

पहले ईएफ 5 डेटाबेस का उपयोग करना। मेरे संदर्भ के निर्माण पर, मैं ContextOptions.LazyLoadingEnabledtrue पर सेट कर रहा हूं। false में बदलने के लिए कुछ होता है (कहीं भी हमारे कोड में यह सेटिंग बदल नहीं है)।LazyLoading सेटिंग क्या है मेरे ईएफ संदर्भ पर गलत करने के लिए सक्षम?

विभिन्न बिंदुओं पर, मैं जांच कर रहा हूं कि यह अभी भी true कोड के this snippet का उपयोग करके (किसी इकाई ऑब्जेक्ट से संदर्भ प्राप्त कर रहा है)। समस्या केवल कई धागे चलाते समय प्रकट होती है (कुछ इकाइयों को लोड करें, फिर उन्हें बहु-थ्रेडेड कोड के माध्यम से पास करें)। यह कोड में किसी भी संगत बिंदु पर नहीं होता है, इसलिए यह निर्धारित करना असंभव है कि इसका क्या कारण है।

मुझे लगता है कि मैं सिर्फ आशा करती हूं कि किसी को एफई के आंतरिक कामकाज के बारे में अधिक जानते हैं और मुझे एक सुराग दे सकता है ...

+0

आप कैसे 'डीबीकॉन्टेक्स्ट कॉन्फिगरेशन.लाज़ी लोडिंगएनेबल' का उपयोग नहीं कर रहे हैं? हालांकि, शायद यह 'ContextOptions.LazyLoadingEnabled' के लिए सिर्फ एक रैपर है। –

+0

मुझे लगता है कि यह सिर्फ एक रैपर है। इसे ईएफ 4 से अपग्रेड किया गया था, इसलिए पुराने तरीके शायद पिछड़े संगतता के लिए है। – dudeNumber4

+0

मुझे ईएफ 4 में एक ही समस्या है http://stackoverflow.com/questions/15374758/lazyloadingenabled-being-to-set-to-false-mid-query-for-one-id-only – bdwain

उत्तर

1

LazyLoadingEnabled निर्धारित करता है कि संबंधित वस्तुओं स्वचालित रूप से लोड कर रहे हैं जब एक नेविगेशन संपत्ति पहुँचा जा सकता है।

मैं में जूली Lermans बुक यह पढ़ याद: programming EF by Julie Lerman

आप एक गतिशील प्रॉक्सी जरूरत आलसी लोड करने के लिए। आपको वर्चुअल नेविगेशन गुणों के साथ एक सार्वजनिक कक्षा की आवश्यकता है।

0

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

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

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

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