मेरा मानना है कि मैं TransactionScopeOption.Suppress
और TransactionScopeOption.Required
समझता हूं लेकिन मुझे TransactionScopeOption.RequiresNew
क्या समझने में कठिनाई हो रही है। आखिरी स्पष्टीकरण के आधार पर जो मैंने पढ़ा है, क्या कोड के निम्नलिखित दो ब्लॉक कार्यात्मक रूप से समान होंगे? क्या यह RequiresNew
का सटीक प्रतिनिधित्व है?लेनदेन को समझनास्कोप विकल्प: आवश्यकताएँ नया = दबाएं + आवश्यक?
using (var ts1 = new TransactionScope(TransactionScopeOption.RequiresNew))
{
DoStuff();
ts1.Complete();
}
और
using (var ts2 = new TransactionScope(TransactionScopeOptions.Suppress))
{
using (var ts3 = new TransactionScope())
{
DoStuff();
ts3.Complete();
}
ts2.Complete(); // not required but recommended for consistency's sake
}
पहले से ही किया था में पा सकते हैं, कि क्या मुझे इस धारणा दे दी है। उद्धरण: "' आवश्यक है ': निहित कोड लेनदेन पर निर्भर करता है, लेकिन स्वतंत्र रूप से प्रतिबद्ध या वापस लुढ़का जाना चाहिए।' दबाएं ': निहित कोड अपना मुआवजा करता है, इसलिए लेनदेन का हिस्सा नहीं होना चाहिए। " इसका मतलब है (मेरे लिए) "काम करना" या "रोलिंग बैक" एक आवश्यक है नया लेनदेनस्कोप बाहरी लेनदेन पर छेड़छाड़ या निर्भर नहीं किया जा सकता है - न तो कोई दूसरे को प्रभावित करता है। यही है कि दबाने को इसके अंदर आवश्यक लेनदेनस्कोप के साथ क्या करना चाहिए। – Jaxidian
सभी ईमानदारी में मैंने आपके दूसरे कोड ब्लॉक को गलत तरीके से पढ़ा और सोचा कि आपके पास 2 नेस्टेड लेन-देन() हैं (मुझे बाहरी पर दबाने से चूक गया)। मैं – Eddy
संपादित करूँगा और केवल स्पष्टीकरण के लिए ... यदि मैं आवश्यक लेनदेन को रोलबैक करता हूं, तो किसी भी तरह से पेरेंट ट्रांजैक्शनस्कोप को प्रभावित नहीं करता है, और इसी तरह, यदि मैं एक पैरेंट ट्रांज़ेक्शनस्कोप रोलबैक करता हूं, तो किसी भी तरह से आवश्यक लेनदेन को प्रभावित नहीं करता है? क्षमा करें, बस यह सुनिश्चित करना चाहते हैं कि मैं इन विकल्पों को पूरी तरह से समझूं। यदि मैं इन मिश्रित हो जाता हूं तो संभावित रूप से गंदे साइड इफेक्ट्स (डेडलॉक, गैर-परमाणु संचालन आदि) बहुत सारे हैं! – Jaxidian