2008-10-09 4 views
5

मैं वर्तमान में एक ऐसे एप्लिकेशन को लिख रहा हूं जिसके लिए मेरी व्यावसायिक इकाई के लिए एकाधिक प्रविष्टियां, अपडेट और डिलीट की आवश्यकता होगी। मैं ट्रांजैक्शनस्कोप क्लास का उपयोग कर रहा हूं ताकि सभी संग्रहीत प्रक्रियाएं काम की एक इकाई के रूप में प्रतिबद्ध हो या वापस रोल कर सकें।.NET ट्रांज़ेक्शनस्कोप क्लास और टी-एसक्यूएल ट्रैन कमेट और रोलबैक

मेरा सवाल यह है कि, मुझे अपने .NET क्लास लाइब्रेरी में ट्रांज़ेक्शनस्कोप क्लास का उपयोग कर रहा है, तो मुझे कॉममिट ट्रैन और रोलबैक ट्रैन का भी उपयोग करने की आवश्यकता है।

उत्तर

2

2005 को यह आवश्यक नहीं है, 2000 में, मैं भी, आमतौर पर लेनदेन को एक में रखता हूं "ब्लॉक का प्रयोग"।

कुछ प्रदर्शन के मुद्दों जब इसे का उपयोग 2000 और पुराने पर बनाम 2005

देखें here

धन्यवाद

+0

मैं SQL सर्वर 2005 का उपयोग कर रहा हूं। जानकारी के लिए धन्यवाद –

0

आपको इसकी आवश्यकता नहीं है - इसे लेनदेनस्कोप के भीतर संभाला जाना चाहिए। यह वास्तव में आप क्या कर रहे हैं और लेनदेन (स्पष्ट या निहित) को संभालने के तरीके के बारे में थोड़ा सा निर्भर करता है और अधिक HERE

+0

मैं केवल स्पष्ट लेनदेन को संभालने में कामयाब रहा हूं। –

8

नहीं, आप अगर अपने लेनदेन के लिए TransactionScope का उपयोग कर स्पष्ट लेनदेन की जरूरत नहीं है कर रहे हैं - हालांकि: महत्वपूर्ण आपको कनेक्शन स्ट्रिंग में शायद Transaction Binding=Explicit Unbind; सेट करना चाहिए। पूरा विवरण here है, लेकिन अन्यथा आप पहले कुछ परिचालनों को वापस लुढ़कने के साथ समाप्त कर सकते हैं, और अंतिम कुछ काम कर रहे हैं (या बल्कि, किसी लेनदेन के बाहर चल रहे हैं)।

1

आप एक TransactionScope या CommittableTransaction में सूचीबद्ध रहे हैं तो मैं दृढ़ता से स्पष्ट रूप से begin transaction या SqlConnection.BeginTransaction का उपयोग कर अपने खुद के स्थानीय लेनदेन बनाने के सुझाव है कि आप ऐसा करेंगे नहीं

TransactionScope/CommittableTransaction एक अलग 'परिवार' कर रहे हैं और इसलिए मैं सैफ खान के साथ असहमत से begin transaction/SqlTransaction

परस्पर अनन्य हैं। यह सच है कि सिस्टम। लेनदेन में एसक्यूएल 2000 पर प्रदर्शन समस्याएं हैं, इसलिए एसक्लट्रांसक्शन या begin transaction का उपयोग करना बेहतर हो सकता है। हालांकि, यदि आप ऐसा करते हैं तो आपको लेनदेनस्कोप/CommittableTransaction का भी उपयोग नहीं करना चाहिए।

वैसे, मार्के ग्रेवेल का वर्णन नेट 4.0 में बदल गया है। भले ही आप स्पष्ट अनबिंड का उपयोग न करें, फिर भी कुछ आदेश वापस लुढ़कना और कुछ प्रतिबद्ध होना संभव नहीं है। (हालांकि वह सही है कि पुराने संस्करणों में आपको स्पष्ट अनबिंड का उपयोग करना चाहिए)।