2009-10-16 12 views
5

कई लोगों ने मॉड्यूल देखने के लिए डोमेन ऑब्जेक्ट्स (मॉडल) को मैप करने के लिए ऑटोमैपर का उपयोग करने के बारे में लिखा है, जो मुझे बहुत रोचक और उपयोगी लगता है, लेकिन मेरा सवाल विपरीत तरीके से कैसे करना है। मैं इस प्रक्रिया की जटिलता को समझता हूं और ऑटोमैपर उस परिदृश्य में क्यों काम नहीं करता है, लेकिन मुझे फॉर्म पोस्टिंग के साथ बहुत कुछ करना है, विशेष रूप से अपडेट करते समय।प्रपत्र मॉडल पोस्टिंग परिदृश्यों में अद्यतन मॉडल और एमवीसी

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

मैंने जो उदाहरण देखे हैं वे बहुत ही सीमित हैं और बेवकूफ हैं, लेकिन हमारे आवेदन में अब हमारे पास 50+ फॉर्म पोस्टिंग परिदृश्य इस तरह और बढ़ रहे हैं।

उत्तर

3

आप दूसरी दिशा में जाने के लिए, पहले दूसरी दिशा करने के लिए नक्शा बनाने, Mapper.Map()

अगला चाहते हैं, आप प्रकार कन्वर्टर्स (बनाने के लिए Mapper.CreateMap() चाहते हो सकता है। ConvertUsing()), क्योंकि कभी-कभी फॉर्म अधिक हो सकते हैं ... स्ट्रिंग-वाई।

फिर, आपको गंतव्य मानों को अनदेखा या उपयोग करने की आवश्यकता हो सकती है। इसे ForMember (entity => entity.Id, opt => opt.Ignore()) या ForMember (entity => entity.ChildCollection, opt => opt.UseDestinationValue()) के साथ कॉन्फ़िगर किया जा सकता है।

अंत में, आप उस अधिभार का उपयोग करना चाहेंगे जो मौजूदा गंतव्य ऑब्जेक्ट, Mapper.Map (डीटीओ, इकाई) लेता है।

+0

मेरा मतलब विशेष रूप से ऑटोमैपर का उपयोग नहीं करना था, लेकिन महान प्रतिक्रिया के लिए धन्यवाद, मैं इस ASAP को आजमाउंगा। –

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