2009-08-15 21 views
27

जब मैं एंटीटी फ्रेमवर्क में अपनी "संस्थाएं" ऑब्जेक्ट का उदाहरण देता हूं, और उस इकाई ऑब्जेक्ट का उपयोग करके कुछ प्रश्न पूछता हूं, तो कनेक्शन के साथ क्या होता है?एंटिटी फ्रेमवर्क कब डेटाबेस कनेक्शन खोलता है और बंद करता है?

  • क्या यह ऑब्जेक्ट का उदाहरण देते समय कनेक्शन खोलता है, और जब मैं इसका निपटान करता हूं तो इसे बंद करता हूं?
  • या क्या यह निष्पादित प्रत्येक क्वेरी के लिए कनेक्शन खोलता है और बंद करता है?

किसी भी मामले में, क्या इसे बदलना संभव है ताकि यह दूसरी बात हो?

+2

वाह @ pb2q देखें जो 6-वर्षीय प्रश्न के लिए एक बहुत ही महत्वपूर्ण संपादन था! अच्छी तरह से किया! –

+0

dMagiola: कोई समस्या नहीं है। किसी भी सुधार में मदद करने के लिए खुश: महत्वपूर्ण या अन्यथा, पुराना या नया। दोस्त से पूछो! – pb2q

उत्तर

26

असल में यह तब खुलता है जब परिणाम का निपटान या खपत होने के बाद अनुरोध को बंद कर दिया जाता है। आप मैन्युअल रूप से खोलने/बंद करने या वस्तु संदर्भ का उपयोग करते हुए एक ही कनेक्शन का उपयोग कर सकते हैं ...

यह लेख एक अधिक पूर्ण विवरण है - http://msdn.microsoft.com/en-us/library/bb738582.aspx

यहाँ है कैसे करने के लिए एक इकाई कनेक्शन http://msdn.microsoft.com/en-us/library/bb738461.aspx के प्रयोग पर

3

व्यवहार EF6 में कुछ हद तक बदल गया, जिससे आप खुले कनेक्शन में जा सकते हैं या बाद में ईएफ कनेक्शन खोल सकते हैं। https://msdn.microsoft.com/en-us/library/dn456849(v=vs.113).aspx

+0

लिंक के लिए बहुत बहुत धन्यवाद - क्या सी # के 'उपयोग' खंड के माध्यम से एक खुला कनेक्शन घोषित करने का कोई तरीका नहीं है? जैसे 'का उपयोग कर (var conn = openaconnection())'। आपके द्वारा साझा किया गया लिंक कनेक्शन के मैन्युअल खोलने को दिखाता है जो संबंधित संदर्भ का निपटारा करते समय बंद हो जाता है, जो कि इतनी अनजान और हैकी लगती है। – aaaaaa

+0

@aaaaa - शायद आप ईएफ 5 और पिछले उदाहरण देख रहे हैं? दूसरे कोड उदाहरण में 'उपयोग' खंड जैसा आप चाहते हैं। ध्यान दें कि आपको केवल इसके बारे में चिंता करने की ज़रूरत है यदि आप वास्तव में कनेक्शन के साथ मैन्युअल रूप से कुछ करना चाहते हैं, उदा। ईएफ के बाहर बयान निष्पादित करने के लिए। अगर आपको इसकी आवश्यकता नहीं है तो आपको कनेक्शन खोलने और बंद करने के बारे में सोचना नहीं है। – Rory

+0

"ईएस 6 और भविष्य के संस्करणों में व्यवहार": 'conn.Open();'। यही वह रेखा है जो मुझे परेशान करती है। और हाँ, मुझे एक संग्रहीत प्रक्रिया से कई परिणाम सेट प्राप्त करने के लिए स्पष्ट रूप से इसकी आवश्यकता है (डीबी अनुरोधों को प्रति दृश्य में रखने की कोशिश कर रहा है) – aaaaaa