c# - How can I force TransactionScope to use the same connection across Database calls? -


गुड मॉर्निंग ऑल,

मेरे पास निम्न के जैसा कोड है

 < कोड> कोशिश {उपयोग (var tx = नया लेन-देन ()) {var Xupdated = someDao.DoSomeUpdateQuery (); // यह दाओ एमएस डेटा का उपयोग करता है ApplicationBlock var Yupdated = someDao.DoSomeOtherUpdateQuery (); // यह दाओ एमएस डेटा एप्लीकेशनब्लॉक का भी उपयोग करता है अगर (एक्सप्डेटेड और amp; Yupdated) {tx.Complete (); }}} पकड़ (अपवाद पूर्व) {DoSomethingWithTheException (); }  

दाओ विधियों में इस तरह से कोड है

  try {var db = DatabaseFactory.CreateDatabase (); Var cmd = db.GetStoredProcCommand (someSP); Var retVal = db.ExecuteNonQuery (सीएमडी); वापसी (रेटवल & gt; 0); } पकड़ (SqlException पूर्व) {CustomException कस्टम = नया CustomException (ex.Message, ex); कस्टम फेंकें;  

}

समस्या यहाँ है जब 'Yupdated' झूठी वापसी करता है, मुझे 'DoSomeUpdateQuery ()' वापस रोल किया जाना चाहिए। दुर्भाग्य से, 'DoSomeUpdateQuery ()' परिवर्तन प्रतिबद्ध हैं मैं यह कैसे उपाय कर सकता हूँ? मैंने एक ब्रेकपॉइंट डाल दिया और टीएक्स। पूर्ण () कभी नहीं कहा जाता है। क्या किसी को पता है कि मैं यहां उचित वांछित व्यवहार कैसे प्राप्त कर सकता हूं? किसी भी संकेत के लिए अग्रिम धन्यवाद।

चीयर्स,

सैन डिएगो में सीके

आपके पास पहले से ही उपयुक्त व्यवहार है जब तक DatabaseFactory वर्ग, जो भी हो, एक सहयोगी तरीके से व्यवहार करता है। अगर कुछ डाऊ कॉल स्वतंत्र रूप से कार्य करने लगते हैं, तो इसका मतलब यह हो सकता है कि वे सक्रिय रूप से इनर गुंजाइश बना रहे हैं। एक और मुद्दा हो सकता है कि अगर CreateDatabase कॉल आंतरिक रूप से कुछ SqlConnection को कैश करता है और SqlClient कनेक्शन पूल पर निर्भर नहीं करता है, इस प्रकार संभवतः लेनदेन में कनेक्शन नामांकन के द्वारा संभवतः पास किया जा रहा है

एक साइड नोट के रूप में, जब यह वांछित के रूप में काम करता है, यह शक्तिशाली अक्षम होगा क्योंकि आप एक अलग-अलग कनेक्शन को एक वितरित-लेनदेन में नामांकित करेंगे और यह महान सौदा एक अच्छा डेटा एक्सेस परत एक वर्ग के रूप में उपयोग करने के लिए एसक्यूएल कनेक्शन को स्वीकार करता है, ताकि वह इसे कॉल के बीच साझा कर सके, इस प्रकार सर्वर पर लेनदेन का दायरा स्थानीय रखने।


Comments

Popular posts from this blog

c# - sqlDecimal to decimal clr stored procedure Unable to cast object of type 'System.Data.SqlTypes.SqlDecimal' to type 'System.IConvertible' -

Calling GetGUIThreadInfo from Outlook VBA -

Obfuscating Python code? -