2010-02-03 15 views
8

क्या इमटेबल प्रकारों के साथ ऑटोमैपर का उपयोग करना संभव है?ऑटोमैपर और अपरिवर्तनीयता

उदाहरण के लिए मेरा डोमेन प्रकार अपरिवर्तनीय है और मैं इसे अपने व्यू प्रकार को मैप करना चाहता हूं।

मेरा मानना ​​है कि यह नहीं है बल्कि यह पुष्टि करना चाहता है।

साथ ही यह आपके डोमेन प्रकारों को अपरिवर्तनीय रखने का सबसे अच्छा अभ्यास है, तो आपके दृश्य प्रकारों को डोमेन प्रकारों पर मैप करते समय सबसे अच्छा अभ्यास क्या है?

+0

डोमेन प्रकार अपरिवर्तनीय? मैं निराश नहीं हूं कि एक सही कथन होगा – David

+2

@ डेविड क्यों नहीं? –

उत्तर

8

मैं आमतौर पर दृश्य प्रकार से डोमेन प्रकारों से मैपिंग करता हूं, क्योंकि मैं आमतौर पर विधियों का उपयोग करके अधिक जटिल इंटरफ़ेस के माध्यम से काम कर रहा हूं। यदि आप व्यू से डोमेन पर जाने के लिए ऑटोमैपर का उपयोग करते हैं, तो अब आप एनीमिक डोमेन मॉडल में लॉक हो गए हैं, भले ही आपने जानबूझकर निर्णय लिया हो या नहीं।

+0

आप क्यों कहेंगे कि डोमेन मॉडल एनीमिक है, अगर आप ऑटोपैपर का उपयोग डोमेन से देखने के लिए करते हैं? किसी भी तरह से दृश्य से डेटा के साथ आपको अपने डोमेन मॉडल की आवश्यकता होगी। क्या ऐसा इसलिए है क्योंकि आप इसके बजाय ctors/विधियों के माध्यम से डोमेन बनाने/पॉप्युलेट करने का प्रस्ताव करते हैं? –

+1

हाँ, बिल्कुल। अपने डोमेन को मजबूत करने पर मेरी श्रृंखला देखें: http://www.lostechies.com/blogs/jimmy_bogard/archive/2010/02/03/strengthening-your-domain-a-primer.aspx यदि आप दूसरे को देखते हैं रेलवे की तरह एमवीसी फ्रेमवर्क, मॉडल की अवधारणा एक सतत मॉडल है, इसलिए आपको ऑटोमैपर की आवश्यकता नहीं है। –

+0

मुझे लगता है कि आपके लेखों ने मुझे प्रभावित किया है, मैंने अक्सर डोमेन ऑब्जेक्ट्स को डीटीओ/वीएम में मैप करने के लिए ऑटोमैपर का उपयोग किया है, लेकिन हमेशा यह देखने के लिए अंत होता है कि ऑटोमैपर को ऐसा कुछ करने के लिए कैसे करना है जो गुणों को एक-दूसरे से मैप करें। इसे हाथ से करने से इसे पढ़ने और डीबग करना आसान नहीं होता है। आप कोड को कैसे बनाते हैं - यानी आप ऑब्जेक्ट्स गुणों को मैप करने वाले तरीकों को कहां रखते हैं? – sambomartin

2

ऑटोमैपर अपने काम करने के लिए प्रॉपर्टी सेटर्स पर निर्भर करता है, इसलिए यदि आपके पास केवल-पढ़ने योग्य गुण हैं, तो ऑटोमैपर का अधिक उपयोग नहीं किया जाएगा।

आप मैपिंग व्यवहार को ओवरराइड कर सकते हैं और, उदाहरण के लिए, इसे एक विशिष्ट कन्स्ट्रक्टर का आह्वान करने के लिए कॉन्फ़िगर करें, लेकिन मूल रूप से ऑटोमैपर के उद्देश्य को हरा देता है क्योंकि तब आप मैन्युअल रूप से मैपिंग कर रहे हैं, और आप केवल एक बेकार जोड़ने में सफल रहे हैं प्रक्रिया में अतिरिक्त कदम।

यह मुझे बहुत समझ में नहीं आता है कि आपका डोमेन मॉडल अपरिवर्तनीय है। आप इसे कैसे अपडेट करते हैं? क्या पूरा एप्लिकेशन केवल पढ़ने के लिए है? और यदि हां, तो आपको से पर अपने डोमेन मॉडल को के विपरीत से मानचित्र बनाने की आवश्यकता क्यों होगी? एक अपरिवर्तनीय डोमेन मॉडल लगता है ... सुंदर बेकार।

पीएस मुझे लगता है कि आपका मतलब this AutoMapper है और auto-mapping feature in Fluent NHibernate या यहां तक ​​कि कुछ अन्य पूरी तरह से अलग बात नहीं है। यदि यह गलत है तो आपको अधिक विशिष्ट होना चाहिए और अपने प्लेटफ़ॉर्म/भाषा के लिए टैग जोड़ना चाहिए।

संबंधित मुद्दे