कोई सख्त और तेज़ नियम नहीं है, लेकिन मुझे व्यापार स्तर से लेनदेन को नियंत्रित करने के कई कारण दिखाई देते हैं:
-
डेटा स्टोर की सीमाओं के पार संचार। लेन-देन का RDBMS के विरुद्ध होना आवश्यक नहीं है; वे विभिन्न संस्थाओं के विरुद्ध हो सकते हैं।
-
व्यावसायिक तर्क के आधार पर लेन-देन को रोलबैक/प्रतिबद्ध करने की क्षमता जो उस विशेष संग्रहीत प्रक्रिया के लिए उपलब्ध नहीं हो सकती है जिसे आप कॉल कर रहे हैं।
-
एक लेन-देन के भीतर प्रश्नों के एक मनमाना सेट को लागू करने की क्षमता। यह लेन-देन की संख्या के बारे में चिंता करने की आवश्यकता को भी समाप्त करता है।
-
व्यक्तिगत वरीयता:सी # में लेनदेन घोषित करने के लिए एक और अधिक सुंदर संरचना है:एक
using
खंड मैथा। तुलना करके, रोलबैक/प्रतिबद्ध करने के लिए कूदते समय मैंने हमेशा संग्रहित प्रक्रियाओं के अंदर लेनदेन को बोझिल पाया है।
कितने लेन-देन खोले जा रहे हैं, इसके आधार पर यह समस्या हो सकती है या नहीं भी हो सकती है (यह स्पष्ट नहीं है कि यह एक ही काम है, या एक प्रक्रिया जो उच्च संगामिति के साथ चलती है)। मैं सुझाव दूंगा कि वस्तुओं पर कौन से ताले लगाए जा रहे हैं, और कितने समय तक ताले लगाए जा रहे हैं।
ध्यान रखें कि सत्यापन संभवतः चाहिए ताला; क्या होगा यदि डेटा आपके द्वारा सत्यापित किए गए समय और कार्रवाई होने के समय के बीच बदलता है?
अगर यह है एक समस्या है, आप आपत्तिजनक प्रक्रिया को दो प्रक्रियाओं में तोड़ सकते हैं, और एक को TransactionScope
के बाहर से कॉल कर सकते हैं ।