ListaServicosProcesso में कोड संदर्भ डीबी बना रहा है। फिर यह एक IQueryable लौटा रहा है।
इस बिंदु पर डेटाबेस को कोई अनुरोध नहीं भेजा गया है।
फिर कोड में प्रत्येक के लिए एक है। इस बिंदु पर ईएफ कहता है "मुझे डेटाबेस से डेटा प्राप्त करने की आवश्यकता है"। तो यह डेटा प्राप्त करने का प्रयास करता है।
लेकिन संदर्भ डीबी अब दायरे से बाहर है, इसलिए यह डेटा का उपयोग करने की कोशिश करने वाली पहली पंक्ति पर क्रैश हो जाता है।
इससे निजात पाने के 2 तरीके हैं:
- ListaServicosProcesso से एक सूची लौटाएं, यह डेटाबेस कॉल को निष्पादित करने के लिए बाध्य करेगा
- प्रत्येक के लिए ListaServicosProcesso में ले जाएं
संपादित करें
फैरबस सही है डीबी दायरे से बाहर नहीं है। समस्या यहाँ है:
db = new RENDBDataContext();
पुराने का निपटारा किए बिना संदर्भ का एक नया उदाहरण बनाया जा रहा है। ListaServicosProcesso के अंत में डीबी का निपटान करने का प्रयास करें। एक प्रयोग कथन में डीबी को और भी बेहतर जगह दें। लेकिन फिर foreach को स्टेटमेंट का उपयोग करके अंदर ले जाना चाहिए।