9

मैं अपने पिछले प्रश्नों में से एक के जवाब के कारण ऑटोमैपर पर पढ़ रहा हूं here

यह कहता है कि ऑटोमैपर जटिल डोमेन मॉडल flattens, लेकिन मुझे कुछ ऐसा करने की जरूरत है जो विपरीत है। मुझे जटिल दृश्य मॉडल में अपने दृश्य मॉडल (फ़्लैट किए गए डोमेन मॉडल) को तार करने की आवश्यकता है ताकि मैं दृश्य मॉडल को डोमेन मॉडल में त्वरित रूप से बदल सकूं।

क्या ऑटोमैपर के समान कुछ भी है जो एक दृश्य मॉडल लेता है और इसे एक जटिल डोमेन मॉडल में बनाता है?ऑटोमैपर डोमेन मॉडल को फ़्लैट करता है लेकिन क्या यह विपरीत करता है? यदि नहीं, तो क्या करता है?

+0

आप ValueInjecter साथ यह कर सकते हैं http://valueinjecter.codeplex.com/ – Omu

उत्तर

1

वास्तव में नहीं, क्योंकि इसे उपयोगी होने के लिए बेहद पारंपरिक होना होगा। फ़्लैटनिंग के दौरान पैटर्न को समझना आसान है, लेकिन दूसरी तरफ 'राउंड ... बस बहुत अधिक कस्टम तर्क।

+2

ValueInjecter करता है यह http://valueinjecter.codeplex.com/ – Omu

+0

न केवल वह है, लेकिन ऐसा लगता है कि दो-तरफा मैपिंग एक संदिग्ध अभ्यास है: http://lostechies.com/jimmybogard/2009/09/18/the-case-for -two-वे-मानचित्रण-इन-automapper /। – gabe

4

आप करते हैं! आप MapToModel विधि बनाते हैं जहां आप दाएं हाथ/बाएं हाथ कोडिंग करते हैं और दोनों को एक साथ सिंक करते हैं।

public MyModel MapToModel(MyViewModelForm vmf) 
{ 
    //new up MyModel model; 
    model.foo = vmf.foo; 

    return model; 
} 

यदि अनुप्रयोग स्वयं को कोडित करते हैं, तो हम वास्तव में एक जीवित रहने के लिए क्या करेंगे ...?

+2

एप्लिकेशन जो खुद को कोड करते हैं :) – Omu

2

ValueInjecter यह होता है, और इसका इस्तेमाल करने के लिए काफी आसान है:

//flatenning 
personDto.InjectFrom<FlatValueInjection>(person); 

//unflattening 
person.InjectFrom<UnflatValueInjection>(personDto); 

और

//this is just mapping without flattening/unflattening 
foo.InjectFrom(bar)