2010-12-21 13 views
31

मेरे पास दो लेन-देन स्कॉप्स हैं, एक दूसरे के भीतर। मुझे यह जानना अच्छा लगेगा कि आंतरिक लेनदेन के दायरे को पूरा करने के बाद वापस ले जाया जाएगा और बाहरी व्यक्ति पूरा नहीं होता है।बाहरी लेनदेन का दायरा पूरा नहीं होने पर आंतरिक लेनदेन का दायरा वापस आ जाएगा?

उत्तर

20

चूंकि वे घोंसले हैं, आंतरिक लेनदेन वापस रोल करेगा।

यह पूरी कहानी नहीं है, और यह निर्भर करता है कि आप नेस्टेड लेनदेन कैसे बनाते हैं, लेकिन डिफ़ॉल्ट रूप से, यह वापस रोल करेगा।

This articleTransactionScope के बारे में गहराई में जाता है और आपके अधिकांश प्रश्नों का उत्तर देना चाहिए।


वितरित किया जा रहा है या अप्रासंगिक नहीं है।

+0

@ फ्रांतिसेक ने वितरित लेनदेन का जिक्र किया। वितरित लेनदेन का उपयोग करके मैं कैसे जानूं? – Tebo

+0

मुझे लगता है कि मैं गलत था। TransactionScope के साथ आपको शायद यह काम करने के लिए डीटीसी की आवश्यकता नहीं है। इसे http://msdn.microsoft.com/en-us/library/ms172152(v=vs.90).aspx पढ़ें: "हालांकि एक नेस्टेड स्कोप रूट स्कोप के परिवेश लेनदेन में शामिल हो सकता है, नेस्टेड स्कोप में पूर्ण कॉलिंग रूट दायरे पर कोई प्रभाव नहीं पड़ता है। केवल तभी जब रूट के सभी दायरे पिछले घोंसले के दायरे में लेनदेन करने के लिए वोट देते हैं, तो लेनदेन किया जाएगा। " –

+1

मुझे यकीन है कि आप इसके बारे में जानते हैं, लेकिन ट्रांज़ेक्शनस्कोप के बारे में बात करते समय "आंतरिक लेनदेन" और "नेस्टेड लेनदेन" शब्द IMHO अनुचित हैं, क्योंकि वास्तव में कोई घोंसला लेनदेन नहीं है, लेकिन केवल नेस्टेड ट्रांज़ेक्शनस्कोप हैं। यदि आप TransactionScopeOption का चयन करते हैं। यह आवश्यक है कि यह केवल 1 बड़ा लेनदेन है और लेनदेनस्कोपऑप्शन के साथ। आवश्यकताएं हैं 2 वहां पूरी तरह से स्वतंत्र लेनदेन हैं, लेकिन वे घोंसले हुए लेनदेन (बंद) के अर्थ में घोंसले नहीं हैं। –

68

यह आपके द्वारा नेस्टेड लेन-देन के दायरे को शुरू करने के दायरे के विकल्प पर निर्भर करता है।

जब बाहरी गुंजाइश वापस रोल भीतरी गुंजाइश भी वापस तैयार की जाएगी, भले ही वह Complete का आह्वान किया है आप डिफ़ॉल्ट विकल्प TransactionScopeOption.Required का उपयोग करते हैं तो नेस्टेड गुंजाइश बाहरी गुंजाइश के रूप में ही लेन-देन में और इस तरह के रूप में भर्ती करेगा।

अगर, हालांकि, आप TransactionScopeOption.RequiresNew का उपयोग तो नेस्टेड गुंजाइश अपने स्वयं के लेन-देन शुरू करते हैं और बाहरी दायरे से अलग से यह पूरा हो जाएगा, तो यह वापस रोल नहीं होगा, भले ही बाहरी गुंजाइश वापस रोल।

आप TransactionScopeOption.Suppress का उपयोग करते हैं तो नेस्टेड गुंजाइश नहीं भाग बाहरी लेनदेन में ले जाएगा और गैर transactionally पूरा हो जाएगा, इस प्रकार काम है कि वापस लुढ़का किया जाएगा का हिस्सा नहीं है, तो बाहरी लेन-देन वापस रोल।

+0

बिल्कुल सही जवाब :) –

संबंधित मुद्दे