DbConnection.EnlistTransaction क्या करता है?DbConnection.EnlistTransaction क्या करता है?
उत्तर
DbConnection.EnlistTransaction
अनुमति देता है:
- एक
System.Transactions.Transaction
के लिए कनेक्शन में शामिल होने से। यह कुछ कमी है: कनेक्शन पहले से ही एक "स्थानीय" लेन-देन (System.Data.Common.DbTransaction
) में भाग ले रहा है, तो- , यह एक अपवाद के साथ विफल हो सकता है (ठोस कनेक्शन कार्यान्वयन पर निर्भर करने लगता है: Firebird 2 ऐसे में कोई फेंक अपवाद करता है स्थिति,
SqlConnection
और अधिकतर अन्य लोग फेंकते हैं)। - यदि कनेक्शन पहले से ही
System.Transactions.Transaction
में शामिल हो गया था, और यह अन्य लेनदेन अभी भी सक्रिय है, तो यह अपवाद के साथ विफल हो जाएगा। - उसी लेनदेन में बार-बार जुड़ना समर्थित है, कम से कम
SqlConnection
,OleDbConnection
औरOdbcConnection
।
यदि कनेक्शन में वर्तमान में उपयोग किए जाने वाले कुछ संसाधन हैं, तो खोले गए डेटा रीडर द्वारा उपयोग किए जाने पर यह असफल हो सकता है। (यह मामला उन कनेक्शनों के आंतरिक कार्यान्वयन में बहुत जल्दी चेक की तरह दिखता है, जो आपूर्ति किए गए लेनदेन को महसूस करने से पहले किया गया है।)
अन्यDbConnection
कार्यान्वयन भिन्न हो सकते हैं।
- , यह एक अपवाद के साथ विफल हो सकता है (ठोस कनेक्शन कार्यान्वयन पर निर्भर करने लगता है: Firebird 2 ऐसे में कोई फेंक अपवाद करता है स्थिति,
- लेनदेन छोड़ना जिसमें कनेक्शन सूचीबद्ध किया गया था, बशर्ते कि लेनदेन और अधिक सक्रिय न हो। (अन्यथा, कनेक्शन का उपयोग करने का प्रयास अपवाद के साथ विफल हो सकता है, कम से कम
OdbcConnection
के साथ।)null
इसके लिए लेनदेन के रूप में आपूर्ति करें।
ध्यान दें कि कुछ कनेक्शनSqlCeConnection
जैसेNullReferenceException
, औरSQLiteConnection
(कम से कम v1.0.105) फेंकते हैं, जोArgumentNullException
फेंकता है।
यदि आप किसी अन्य लेन-देन में शामिल किए बिना किसी अन्य परिचालन के लिए कनेक्शन का उपयोग करना चाहते हैं तो पूरा होने के बाद लेनदेन छोड़ना आवश्यक है। कुछ कनेक्शन लेनदेन को स्वतः छोड़ने लगते हैं, अन्य ऐसा नहीं लगता है।
DbConnection.EnlistTransaction
आमतौर पर System.Transactions.Transaction.Current
के साथ उपयोग किया जाता है। यदि TransactionScope
के भीतर कनेक्शन अधिग्रहित (खोला गया) है तो इसका उपयोग करने की आवश्यकता नहीं है: ऐसे मामले में, कनेक्शन स्वचालित रूप से वर्तमान लेनदेन में स्वयं को सूचीबद्ध करता है (जब तक कि इसकी कनेक्शन स्ट्रिंग अन्यथा enlist=false
के साथ निर्देशित न हो)।
यह आपको एकाधिक कनेक्शन के बीच लेनदेन को समन्वयित करने की अनुमति देता है। यदि आप लेनदेनस्कोप का उपयोग करते हैं तो एक कनेक्शन स्वचालित रूप से एक लेनदेन में शामिल हो जाएगा। अन्यथा आपको मौजूदा लेनदेन के साथ सूची बनाना है।
स्वचालित enlisting केवल गारंटी है अगर कनेक्शन लेनदेन के दायरे में अधिग्रहण किया जाता है। यदि इसे बाहर अधिग्रहित किया जाता है, तो भीतर उपयोग किया जाता है, इसे सूचीबद्ध नहीं किया जाएगा। (कम से कम मैंने देखा है कि एक कनेक्शन के साथ जिसे पहले किसी अन्य लेन-देन के दायरे में अधिग्रहित किया गया था: इसे अगले (किसी स्कोप पूर्ण होने के बाद) के साथ उपयोग करने के लिए, इसे स्पष्ट रूप से सूचीबद्ध करना आवश्यक था।) –
- 1. रीडीम संरक्षित करता है क्या करता है?
- 2. inverse_of क्या करता है? यह एसक्यूएल क्या उत्पन्न करता है?
- 3. क्या करता है -एरेविथअरे वास्तव में क्या करता है?
- 4. क्या करता है? ... : ... कर?
- 5. __sync_synchronize क्या करता है?
- 6. CG_INLINE क्या करता है?
- 7. System.Concurrency.AsyncLock क्या करता है?
- 8. [:] क्या करता है?
- 9. MethodImplOptions.Synchronized क्या करता है?
- 10. stdole.dll क्या करता है?
- 11. gobject.type_register() क्या करता है?
- 12. [STAThread] क्या करता है?
- 13. आकार क्या करता है?
- 14. एल क्या करता है?
- 15. "* ptrInt ++" क्या करता है?
- 16. AVEncoderAudioQualityKey क्या करता है?
- 17. प्रतीक्षापिड() क्या करता है?
- 18. क्या addActionListener करता है?
- 19. MailMessage.IsBodyHtml क्या करता है?
- 20. DBContext.Entry क्या करता है?
- 21. EventEmitter.call() क्या करता है?
- 22. class_getClassVariable() क्या करता है?
- 23. NHibernateUtil.Initialize क्या करता है?
- 24. "mro()" क्या करता है?
- 25. mod_auth_passthrough क्या करता है?
- 26. विश्वसनीयताContractAttribute क्या करता है?
- 27. PostInvalidate() क्या करता है?
- 28. APIENTRY क्या करता है?
- 29. यह क्या करता है?
- 30. एमएमएपी क्या करता है?
दस्तावेज़ों की जांच करें? http://msdn.microsoft.com/en-us/library/system.data.common.dbconnection.enlisttransaction.aspx – DaveHogan
मैं यहां नहीं पूछूंगा क्योंकि मैं वहां जांचता हूं .. –
दस्तावेज़ - ऊपर पोस्ट किए गए - इसे पूरी तरह से वर्णन करें अच्छी तरह से "टिप्पणियां" के तहत। – DaveHogan