डीडीडी में, कुल रूट में एक भंडार हो सकता है। आइए ऑर्डर कुल और यह गैर-लगातार समकक्ष ऑर्डर रिपोजिटरी और लगातार समकक्ष ऑर्डरयूओडब्ल्यू है। हमारे पास उत्पाद संस्करण कुल है जो क्रम में उत्पादों की सूची ट्रैक करता है। इसमें उत्पाद VariantRepository और ProductVariantUoW हो सकता है।डीडीडी में, एक यूओडब्ल्यू प्रति रिपोजिटरी या बाउंड संदर्भ या लेनदेन?
आदेश और उत्पाद संस्करण का तरीका यह है कि ऑर्डर जारी होने से पहले, सूची की जांच की जाती है। यदि सूची है, तो ऑर्डरयूओडब्ल्यू.कॉमिट() को कॉल करके ऑर्डर जारी रहेगा। हां, उत्पादों की सूची अद्यतन करने के लिए ProductVariantUoW.Commit() को कॉल किया जाएगा।
अनजाने में चीजें खराब हो सकती हैं, उपयोगकर्ता ने उस संक्षिप्त समय में वही उत्पाद खरीदे हैं (इसे एक वेब ऐप के रूप में देखें जहां दो उपयोगकर्ता एक ही उत्पाद खरीद रहे हैं)। अब दूसरे उपयोगकर्ता के लिए पूरा लेनदेन अभी बनाए गए ऑर्डर को वापस कर विफल होना चाहिए। क्या मुझे ऑर्डर यूओडब्ल्यू को परिवर्तनों को रोलबैक करने के लिए कॉल करना चाहिए (ऑर्डर डीबी से हटाया जाना चाहिए)? या क्या मुझे UoW.Commit() दोनों लेनदेन के दायरे में संचालन करना चाहिए, इसलिए एक प्रतिबद्ध() में विफल होने से परिवर्तनों में कमी आएगी? या दोनों रिपॉजिटरीज़ (ऑर्डर, उत्पाद संस्करण) में केवल यूओडब्ल्यू होना चाहिए और इसमें केवल एक लेनदेन का दायरा होना चाहिए?
मैं कहकर कहानी कम कर सकता हूं कि लेन-देन कैसे संभाला जाता है जहां कई रिपोजिटरी शामिल हैं?
धन्यवाद एरिक। मुझे स्पष्ट करने दें कि जो भी मैंने मूल पोस्ट में वर्णित किया है वह ऐप सेवा परत में होता है, न कि डोमेन परत में। ऐप सेवा परत ऑर्डर सबमिट करने के लिए रिपोजिटरी, यूओडब्ल्यू ऑफ ऑर्डर और उत्पाद वैरिएंट को समन्वयित कर रही है। मूल पोस्ट में मेरा प्रश्न लेनदेन करने के बारे में है जब दो यूओडब्ल्यू उपलब्ध हैं? –
मुझे लगता है कि आपको छोटे यूओडब्ल्यू को एक बड़े यूओडब्ल्यू में लिखने की आवश्यकता है जो उन्हें प्रभावी रूप से एक ही लेनदेन में बनाता है। Http://stackoverflow.com/a/11658021/471129 भी देखें। –