डोमेन इकाइयों में आईडी फ़ील्ड रखना ठीक क्यों माना जाता है? मैंने कई समाधान देखा है जो आईडी और आईडी-आधारित GetHashCode/Equals के साथ बेस क्लास प्रदान करते हैं।डीडीडी: प्राथमिक कुंजी (आईडी) और ओआरएम (उदाहरण के लिए, एनएचबीर्नेट)
डोमेन मॉडल की मेरी समझ यह है कि इसमें केवल डोमेन से संबंधित चीजें होनी चाहिए। जबकि दुर्लभ मामलों (ट्रैक करने योग्य आदेश) आईडी में सार्थक हैं, ज्यादातर समय वे डीबी/यूआई में ऑब्जेक्ट्स को संदर्भित करने के लिए एक आसान तरीका को छोड़कर कुछ भी प्रदान नहीं करते हैं।
मुझे इक्विल्स/गेटहाशकोड लाभ भी नहीं दिखते हैं, क्योंकि पहचान मानचित्र कार्यान्वयन की गारंटी होनी चाहिए कि संदर्भ समानता आईडी समानता है।
अजीब, मैं आसानी से अन्य लोगों को इस विषय पर क्या सोचते हैं नहीं मिल रहा है, तो मैं इसे यहाँ पूछ रहा हूँ। डोमेन इकाइयों में गैर-डोमेन संबंधित आईडी का उपयोग करने पर सामान्य राय क्या है? और क्या एनएचबीरनेट के साथ कोई समस्या है यदि मैं अपने डोमेन इकाइयों में आईडी नहीं जोड़ता हूं?
अद्यतन:
जवाब के लिए धन्यवाद।
उनमें से कई सुझाव है कि ईद होने ORM एक DB अद्यतन करने के लिए एक ही रास्ता है। मुझे नहीं लगता कि यह मामला है। ओआरएम पहले ही डीबी से लोड की गई सभी इकाइयों का ट्रैक रखता है, इसलिए जब इसे किसी की आवश्यकता होती है तो इसे आसानी से आईडी प्राप्त करने में सक्षम होना चाहिए।
अद्यतन 2: न्याय और समान अंक के
उत्तर: क्या हम एक वेब अनुप्रयोग और जरूरत सत्र के बीच इकाई को संदर्भित करने के लिए एक रास्ता है या नहीं? संपादन/संसाधन/आईडी की तरह?
ठीक है, मैं विवश यूआई/पर्यावरण का एक विशिष्ट जरूरत है, न कि एक डोमेन मॉडल की जरूरत के रूप में देखते। GetIdentitity विधि (लोड (पहचान) विधि के साथ संगत) के साथ एक एप्लिकेशन सेवा या भंडार होने के कारण इस परिदृश्य के लिए पर्याप्त लगता है।
यदि आपके पास पहचानकर्ता नहीं है तो आप GetIdentity को कैसे कार्यान्वित करेंगे? आपको क्लाइंट से वस्तु मिल जाएगी, और आपको पहचान देखना होगा। आप इसे कैसे ढूंढेंगे? ऑब्जेक्ट की सामग्री क्लाइंट पर बदल दी गई थी। अब आप इसे नहीं ढूंढ पाएंगे। मैंने आपके उत्तर में आपकी टिप्पणियों का भी उत्तर दिया। –
जब मैं क्लाइंट से ऑब्जेक्ट प्राप्त करता हूं तो मैं इस तथ्य का जिक्र नहीं कर रहा हूं। इस मामले में मुझे शायद कुछ डीटीओ मिलते हैं जिसमें एक आईडी है (और यह प्रासंगिक है भले ही मेरे पास डीबी न हो और स्मृति में सब कुछ स्टोर न करें, इस मामले में डीटीओ में आईडी कुछ आंतरिक हैशटेबल में एक कुंजी हो सकती है)। लेकिन क्लाइंट को ऑब्जेक्ट भेजने से पहले, मैं एक आईडी प्राप्त कर सकता हूं और इसे भेज रहा हूं डीटीओ में जोड़ सकता हूं। या बस कुछ मामलों में एक आईडी भेजें। –
मैंने एनएच दस्तावेज में पाया कि एनएच को आईडी संपत्ति की आवश्यकता नहीं है! मेरा जवाब देखें, मैंने एक सेक्शन जोड़ा। –