के साथ लेनदेन का उपयोग करना मेरे पास एक स्थिति है (मुझे अनुमान है कि यह मानक है) जहां मुझे कुछ व्यवसायिक गणना करने और डेटाबेस में रिकॉर्ड्स का एक समूह बनाने की आवश्यकता है। अगर किसी भी समय कुछ भी गलत हो जाता है तो मुझे डेटाबेस से सब कुछ वापस रोल करने की आवश्यकता होती है। Obviosly मुझे किसी तरह के लेनदेन की जरूरत है। मेरा सवाल यह है कि मैं लेनदेन समर्थन कहां लागू करूं? यहाँ मेरी उदाहरणबिजनेस प्रोसेस और रिपोजिटरी पैटर्न
//BillingServices - This is my billing service layer. called from the UI
public Result GenerateBill(BillData obj)
{
//Validate BillData
//Create a receivable line item in the receivables ledger
BillingRepository.Save(receivableItem);
//Update account record to reflect new billing information
BillingRepository.Save(accountRecord);
//...do a some other stuff
BillingRepository.Save(moreStuffInTheDatabase);
}
अगर डेटाबेस के लिए अद्यतन के किसी भी असफल मैं अन्य लोगों को वापस रोल और बाहर निकलने की जरूरत है। मैं बस अपना भंडार के माध्यम से एक कनेक्शन वस्तु जिसमें मैं
Connection.BeginTransaction (कॉल कर सकते हैं)
बेनकाब या मैं मैं सिर्फ सेवा परत में मान्य और बस भंडार है कि सभी की बचत होती है में एक विधि कॉल करते है वस्तुओं और लेनदेन संभालती है? यह मेरे लिए बिल्कुल सही नहीं लगता है। ऐसा लगता है कि यह मुझे डेटा परत में अधिक व्यावसायिक तर्क देने के लिए मजबूर करेगा।
सही दृष्टिकोण क्या है? अगर मुझे भंडारों को फैलाने की ज़रूरत है (या वह खराब डिजाइन होगा) तो क्या होगा?
+1, अच्छा सवाल। –
उम्मीद है कि मुझे एक अच्छा जवाब मिलेगा =)। असल में इस बिंदु पर कोई भी जवाब अच्छा होगा – Micah