मान लें कि हमारे पास प्रकार ऑर्डर की कुल रूट इकाई है जो ग्राहकों और ऑर्डर लाइनों से संबंधित है। जब मैं किसी ऑर्डर इकाई के बारे में सोचता हूं तो इसे किसी भी आईडी के बिना परिभाषित नहीं किया जा सकता है। एक आईडी के बिना एक आदेश आदेश के आदेश आदेश के रूप में बेहतर प्रतिनिधित्व किया प्रतीत होता है।एक भंडार के लिए कुल रूट जोड़ने के लिए कैसे व्यक्त किया जाना चाहिए?
भंडार करने के लिए एक आदेश को जोड़ने के लिए, मैं आमतौर पर लोगों को ईद के बिना आदेश का दृष्टांत और फिर भंडार वस्तु पूरा हो देखें:
class OrderRepository
{
void Add(Order order)
{
// Insert order into db and populate Id of new order
}
}
क्या मैं इस दृष्टिकोण के बारे में की तरह है कि आप एक जोड़ रहे है ऑर्डर रिपॉजिटरी को ऑर्डर इंस्टेंस करें। यह काफी काम की बात है। हालांकि, ऑर्डर इंस्टेंस में आईडी नहीं है, और रिपोजिटरी के उपभोक्ता के दायरे में, यह अभी भी मुझे कोई समझ नहीं आता है कि ऑर्डर में आईडी नहीं है। मैं आदेश की एक उदाहरण होने के लिए ऑर्डर रेक्वेट को परिभाषित कर सकता हूं और इसे भंडार में जोड़ सकता हूं, लेकिन ऐसा लगता है कि एक संतरे से एक सेब निकालना और फिर संतरे की सूची में जोड़ना।
class OrderRepository
{
Order AddOrder(Customer customer)
// It might be better to call this CreateOrder
{
// Insert record into db and return a new instance of Order
}
}
क्या मैं इस दृष्टिकोण के बारे में की तरह है कि एक आदेश एक आईडी के बिना अपरिभाषित है:
वैकल्पिक रूप से, मैं भी इस दृष्टिकोण को देखा है। भंडार डेटाबेस रिकॉर्ड बना सकता है और आदेश के उदाहरण को लौटने और वापस करने से पहले सभी आवश्यक फ़ील्ड एकत्र कर सकता है। यहां क्या गंध है यह तथ्य है कि आप वास्तव में भंडार के आदेश का एक उदाहरण नहीं जोड़ते हैं।
किसी भी तरह से काम करता है, इसलिए मेरा सवाल है: क्या मुझे इन दो व्याख्याओं में से एक के साथ रहना है, या क्या सम्मिलन मॉडल का सर्वोत्तम अभ्यास है?
मुझे यह उत्तर मिला जो समान है, लेकिन मूल्य वस्तुओं के लिए: how should i add an object into a collection maintained by aggregate root। जब किसी मूल्य वस्तु की बात आती है तो कोई भ्रम नहीं होता है, लेकिन मेरा प्रश्न बाहरी स्रोत (ऑटो-जेनरेटेड डाटाबेस आईडी) से प्राप्त पहचान वाले इकाई से संबंधित है।
मैं तर्क देता हूं कि एक आईडी के बिना एक ऑर्डर एक ऑर्डर इकाई नहीं है, जहां आपका पहला प्रारंभिक विचार आता है। इसका मुकाबला करने के लिए, आपको अपनी वस्तुओं की स्थिति याद रखना होगा। समय पर एक विराम के रूप में 'राज्य' को देखो। यानी, एक वेबपेज अनुरोध। आदेश के निर्माण के दौरान, हाँ, इसमें पहले कोई आईडी नहीं है लेकिन आप अभी तक इसके राज्य के साथ नहीं किए गए हैं - आप इसे() में भंडार में जोड़ते हैं, जिससे ऑर्डर() की निरंतर स्थिति को पूरा किया जाता है, जो अब है पूर्ण। – eduncan911
मैं अभी तक आपके साथ असहमत नहीं हूं, हालांकि यदि आप दावा करते हैं कि बिना किसी आईडी और आईडी एक संक्षिप्त विराम के लिए एक इकाई है, तो उस विराम के दौरान इसमें कोई स्पष्ट पहचान नहीं होगी। मुझे लगता है, कम से कम अर्थात्, कि यह एक इकाई की परिभाषा के साथ एक विरोधाभास है। –
पहचान उतनी ही कट और सूखी नहीं है जितनी आप सोचेंगे। मेरी आस्था में, हमारी पहचान हमारी धारणा से मौजूद हमारी अनोखी आत्माएं हैं। लेकिन सरकार के लिए, हमारी पहचान एक से अधिक माध्यमों के माध्यम से स्थापित की जा सकती है: जन्म प्रमाण पत्र, पासपोर्ट, आदि। ऐसे समय में एक बिंदु है जहां बच्चे को सरकार के लिए कोई आधिकारिक पहचान नहीं है लेकिन सरकार अभी भी इसे एक इकाई के रूप में देखती है, हालांकि किसी को पहचान की आवश्यकता है। सरकार के रूप में एक बहुमूल्य छोटे बच्चे और भंडार के रूप में एक आदेश के बारे में सोचें (इनट्स अधिक उपयोगकर्ता के अनुकूल हैं!) :) – tuespetre