यह Nested Database transactions in C# से संबंधित है।क्या मैं SqlConnection.BeginTransaction और TransactionScope मिश्रण कर सकता हूं?
संग्रह में ऑब्जेक्ट्स मैं लेनदेन में लेना चाहता हूं SqlConnection.BeginTransaction विधि का उपयोग करके अपने लेनदेन को लागू करना चाहता हूं।
यह post पढ़ने के बाद मुझे यकीन नहीं है कि मैं उन्हें भी मिश्रण कर सकता हूं या नहीं। मैं SQL सर्वर 2005 का उपयोग कर रहा हूं और प्रत्येक ऑब्जेक्ट स्थिर कॉन्फ़िगरेशन क्लास से कनेक्शन विवरण का उपयोग करता है।
क्या किसी के पास इसका अनुभव है?
यहाँ नमूना कोड है:
using(TransactionScope scope = new TransactionScope())
{
for (int i=0; i<=1000....)
{
SqlConnection con = new SqlConnection()
SqlCommand cmd = new SqlCommand("delete from ...", con);
try {
con.Open();
DbTransaction t = con.BeginTransaction();
cmd.ExecuteNonQuery();
...
cmd.CommandText = .... ;
cmd.ExecuteNonQuery();
t.Commit ...
}
catch {
t.Rollback ...
}
con.Close()
}
}
Thx
आपको इस प्रश्न का उत्तर के रूप में अपना उत्तर चिह्नित करना चाहिए - इसकी अनुमति है! – Fenton
मेरे मामले में हमारे पास "यूनिट" परीक्षण हैं जो ट्रांज़ेक्शनस्कोप में लिपटे हैं ताकि हमारी विकास मशीनों पर हम प्रत्येक टेस्ट और टेस्ट क्लास के बारे में सोचने के बिना जटिल डेटाबेस मैनिप्लेशंस प्राप्त कर सकें और इसे सभी [सैद्धांतिक रूप से] लुढ़का हुआ वापस प्राप्त कर सकें। साथ ही, हम उत्पादन सर्वर पर एमएस डीटीसी उपयोग नहीं करना चाहते हैं, और मैं नियमित लेनदेन में कुछ यौगिक इकाई फ्रेमवर्क इकाई कुशलता को लपेटना चाहता था ताकि अगर कोई भी विफल हो जाए तो पूरा ऑपरेशन रोलबैक कर सकता है ... आदर्श रूप से TransactionScope काम करना जारी रखना चाहिए, और आंतरिक लेनदेन भी चाहिए ... – bambams