NDC12 प्रस्तुति देख जिमी Bogard (http://ndcoslo.oktaset.com/Agenda) से "दुष्ट डोमेन मॉडल क्राफ्टिंग" के बाद के साथ रिच डोमेन मॉडल, मैं भटक रहा था कैसे डोमेन मॉडल उस तरह लागू करने के लिए।व्यवहार और ORM
public class Member
{
List<Offer> _offers;
public Member(string firstName, string lastName)
{
FirstName = firstName;
LastName = lastName;
_offers = new List<Offer>();
}
public string FirstName { get; set; }
public string LastName { get; set; }
public IEnumerable<Offer> AssignedOffers {
get { return _offers; }
}
public int NumberOfOffers { get; private set; }
public Offer AssignOffer(OfferType offerType, IOfferValueCalc valueCalc)
{
var value = valueCalc.CalculateValue(this, offerType);
var expiration = offerType.CalculateExpiration();
var offer = new Offer(this, offerType, expiration, value);
_offers.Add(offer);
NumberOfOffers++;
return offer;
}
}
तो वहाँ कुछ इस डोमेन मॉडल में शामिल नियम हैं::
इस प्रस्तुति से नमूना वर्ग है
- सदस्य होना आवश्यक है प्रथम और अंतिम नाम
- प्रदान करता है की संख्या के बाहर नहीं बदला जा सकता
- सदस्य नए मूल्य बनाने के लिए ज़िम्मेदार है, इसकी कीमत और असाइनमेंट की गणना
यदि एंटिटी फ्रेमवर्क या एनएचबीर्नेट जैसे कुछ ओआरएम को मैप करने का प्रयास करें, तो यह काम नहीं करेगा। तो, इस तरह के मॉडल को ओआरएम के साथ डेटाबेस में मैप करने के लिए सबसे अच्छा तरीका क्या है?
उदाहरण के लिए, यदि कोई सेटर नहीं है तो मैं डीबी से असाइन किए गए ऑफ़र्स कैसे लोड करूं?
केवल बात मेरे लिए कोई मतलब नहीं है कि उपयोग कर रहा है आदेश/क्वेरी वास्तुकला: प्रश्नों हमेशा डीटीओ के साथ किया जाता है परिणाम के रूप में, न कि डोमेन संस्थाओं, और आदेशों डोमेन मॉडल पर किया जाता है। साथ ही, ईवेंट सोर्सिंग डोमेन मॉडल पर व्यवहार के लिए बिल्कुल सही है। लेकिन इस तरह का सीक्यूएस आर्किटेक्चर शायद हर परियोजना, विशेष रूप से ब्राउनफील्ड के लिए उपयुक्त नहीं है। या नहीं?
मैं इसी तरह के सवाल यहाँ के बारे में पता है, लेकिन ठोस उदाहरण और समाधान नहीं मिल सका।
मैंने अभी वही वीडियो देखा, और मैं वही चीज़ सोच रहा था। कन्स्ट्रक्टर में पोको पास करने के बारे में आप क्या सोचते हैं, और उस वर्ग के क्लोन को वापस करने के लिए सदस्य वर्ग पर एक पठनीय संपत्ति भी रखते हैं? इस तरह आप इसे जारी रखने या इसे पारित करने के लिए डोमेन ऑब्जेक्ट में डेटा को बाहर और बाहर प्राप्त कर सकते हैं। – stralsi
ऑब्जेक्ट स्नैपशॉट की तरह कुछ? यह संभवतः काम करेगा लेकिन इसे ओआरएम उपकरण के साथ काम करने के लिए कुछ हैकिंग की भी आवश्यकता होगी। मैं व्यक्तिगत रूप से किसी भी आसान तरीके से नहीं देखता हूं, और यह बहुत सारे अवशोषण और सामान्यीकरण लाएगा जो आपको पूरे ऐप देव से लड़ना होगा। इवेंट सोर्सिंग आईएमओ –
जाने का एकमात्र तरीका है, मैंने वास्तव में इस वीडियो को देखा और वही बात सोच रहा था; क्या इसका मतलब है कि आपको डेटा/दृढ़ता परत के लिए डीटीओ/पीओसीओ ऑब्जेक्ट्स का एक सेट चाहिए जो आपके ओआरएम हाइड्रेट्स और उसके बाद किसी डोमेन ऑब्जेक्ट पर मैप करने के लिए ऑटोमैपर जैसे मैपर का उपयोग करें? क्या ऐसा कुछ भंडार में होता है? ऐसा लगता है कि ईएफ कोड की तरह ओआरएम की तरह पहले गेटर्स और सेटर्स के साथ एक पीओसीओ की उम्मीद है। – Abe