Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

कष्टप्रद एसक्यूएल अपवाद, शायद कुछ कोड गलत होने के कारण

ListaServicosProcesso में कोड संदर्भ डीबी बना रहा है। फिर यह एक IQueryable लौटा रहा है।

इस बिंदु पर डेटाबेस को कोई अनुरोध नहीं भेजा गया है।

फिर कोड में प्रत्येक के लिए एक है। इस बिंदु पर ईएफ कहता है "मुझे डेटाबेस से डेटा प्राप्त करने की आवश्यकता है"। तो यह डेटा प्राप्त करने का प्रयास करता है।

लेकिन संदर्भ डीबी अब दायरे से बाहर है, इसलिए यह डेटा का उपयोग करने की कोशिश करने वाली पहली पंक्ति पर क्रैश हो जाता है।

इससे निजात पाने के 2 तरीके हैं:

  • ListaServicosProcesso से एक सूची लौटाएं, यह डेटाबेस कॉल को निष्पादित करने के लिए बाध्य करेगा
  • प्रत्येक के लिए ListaServicosProcesso में ले जाएं

संपादित करें

फैरबस सही है डीबी दायरे से बाहर नहीं है। समस्या यहाँ है:

 db = new RENDBDataContext();

पुराने का निपटारा किए बिना संदर्भ का एक नया उदाहरण बनाया जा रहा है। ListaServicosProcesso के अंत में डीबी का निपटान करने का प्रयास करें। एक प्रयोग कथन में डीबी को और भी बेहतर जगह दें। लेकिन फिर foreach को स्टेटमेंट का उपयोग करके अंदर ले जाना चाहिए।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SSMS संस्करण 18 - कोई डेटाबेस आरेख नहीं

  2. SQL सर्वर इंस्टेंस से सभी डेटाबेस में प्राथमिक कुंजी बाधा के साथ या बिना तालिकाओं की सूची प्राप्त करें - SQL सर्वर / TSQL ट्यूटोरियल भाग 61

  3. बयान समाप्त हो गया। स्टेटमेंट पूरा होने से पहले अधिकतम 100 रिकर्सन समाप्त हो गया है

  4. SQL सर्वर पुनरावर्ती क्वेरी

  5. EF4 के साथ डेटाबेस जेनरेट किए गए GUID और डेटाटाइम का उपयोग करना