मैं निम्नलिखित डीबी मॉडल है:DDD: संस्थाओं की तरह Enum
**Person table**
ID | Name | StateId
------------------------------
1 Joe 1
2 Peter 1
3 John 2
**State table**
ID | Desc
------------------------------
1 Working
2 Vacation
और डोमेन मॉडल हैं (सरलीकृत) किया:
public class Person
{
public int Id { get; }
public string Name { get; set; }
public State State { get; set; }
}
public class State
{
private int id;
public string Name { get; set; }
}
राज्य डोमेन तर्क जैसे में इस्तेमाल किया जा सकता है:
if(person.State == State.Working)
// some logic
तो मेरी समझ से, राज्य एक मूल्य वस्तु की तरह कार्य करता है जिसका उपयोग डोमेन तर्क जांच के लिए किया जाता है। लेकिन इसे स्वच्छ ईआरएम का प्रतिनिधित्व करने के लिए डीबी मॉडल में उपस्थित होने की भी आवश्यकता है।
तो राज्य के लिए बढ़ाया जा सकता है:
public class State
{
private int id;
public string Name { get; set; }
public static State New {get {return new State([hardCodedIdHere?], [hardCodeNameHere?]);}}
}
लेकिन इस दृष्टिकोण राज्य के नाम डोमेन में hardcoded किया जाएगा इस्तेमाल करते हैं।
क्या आप जानते हैं मेरा क्या मतलब है? क्या ऐसी चीज के लिए एक मानक दृष्टिकोण है? मेरे दृष्टिकोण से मैं जो करने की कोशिश कर रहा हूं वह एक ऑब्जेक्ट का उपयोग कर रहा है (जो ईआरएम डिज़ाइन परिप्रेक्ष्य से जारी है) मेरे डोमेन के भीतर एक मूल्य वस्तु के रूप में। तुम क्या सोचते हो?
प्रश्न अद्यतन: शायद मेरा प्रश्न पर्याप्त स्पष्ट नहीं था।
मुझे क्या जानने की ज़रूरत है, मैं एक इकाई (जैसे राज्य उदाहरण) का उपयोग कैसे करूं जो मेरे डोमेन तर्क के भीतर डेटाबेस में संग्रहीत है। जैसी चीजों से बचने के लिए:
if(person.State.Id == State.Working.Id)
// some logic
या
if(person.State.Id == WORKING_ID)
// some logic
चूंकि आपके राज्यों में डेटाबेस में एक आईडी है, afaik वे संस्थाएं हैं (मूल्य वस्तुओं को उनके गुणों द्वारा पहचाना जाता है, आईडी नहीं)। हो सकता है कि आपको उन्हें छोड़ दें और मूल्यों को सीधे संबंधित डीबी तालिका में स्टोर करें? – ZeissS