2011-03-21 32 views
11

मैं objectBAutomapper: आंशिक मानचित्रण

को
classe ObjectA 
{ 
    string Title; 
    string Summary; 
} 

classe ObjectB 
{ 
    string Title; 
    string Summary; 
    IAddress Address; 
} 

objectA से डेटा स्थानांतरित करने के Automapper उपयोग कर रहा हूँ मैं दो वस्तुओं

AutoMapper.Mapper.CreateMap<IObectA, IObjectB>() 
     .ForMember(dest => dest.Title,   src => src.MapFrom(s => s.Title)) 
     .ForMember(dest => dest.Summary,   src => src.MapFrom(s => s.Summary)) 
     .ForMember(dest => dest.Address,   src => src.Ignore()) 

मैं अपने ObjectB बना सकते हैं और भरने के बीच मानचित्रण के इस प्रकार बनाए गए सभी अपने पता

जब मैं मैपर को कॉल करता हूं, तो मुझे उम्मीद थी कि यह शीर्षक और सारांश को ओवरराइड करेगा और पता

0 को अनदेखा कर देगा
ObjectB = Mapper.Map<IObjectA, IObjectB>(objectA); 

असल में, यह पते के लिए फेंक रहा है और अपवाद है।

मैं क्या गलत कर रहा हूं?

[अद्यतन] इसे दूसरे तरीके से व्यक्त करने के लिए, मैं अपने objectB है और मैं ObjectA से आने वाले डेटा के साथ इसका हिस्सा अपडेट करना चाहते हैं। जब मैं अनदेखा करता हूं, मेरा मतलब है कि डेटा को पहले से ही

+0

के लिए धन्यवाद यह पता है कि अपवाद आप प्राप्त उपयोगी हो सकता है ... – JoDG

+0

यह आप सब कुछ गलत कर रहे हैं। आपका कोड उदाहरण ऑब्जेक्ट ए के लिए कक्षा परिभाषा को दो बार दिखाता है। बाद में आप कहते हैं कि आप ऑब्जेक्टबी को अपनी सभी संपत्तियों से भरते हैं, लेकिन अंतिम कोड स्निपेट में यह दिखाता है कि आप ऑब्जेक्ट को ऑब्जेक्ट करने की कोशिश कर रहे हैं, ऑब्जेक्ट बी के लिए, दूसरी तरफ नहीं। – JoDG

+0

@ जोडीजी, माई मिस्टके। मैंने अपनी प्रारंभिक पोस्ट अपडेट की। ने 'System.Collections.Generic.KeyNotFoundException' – user385411

उत्तर

31

मुझे समाधान मिला है।

मुझे अभी पता चला है कि मानचित्र विधि में एक ओवरलोडेड संस्करण है जो पूर्व-तत्काल गंतव्य ऑब्जेक्ट को छोड़ देता है। इस article

Mapper.Map<IObjectA, IObjectB>(objectA, ObjectB); 

@JoDG के लिए धन्यवाद, आपकी मदद

+3

पर किसी भी कॉन्फ़िगरेशन के बिना ऑब्जेक्टब.इजेक्टफ्रॉम (ऑब्जेक्टए) होगा, अब से संबंधित आलेख मौजूद नहीं है ... :( – noocyte

+1

@noocyte: Archive.org में आपका वापस! http://web.archive.org/web/20130124102758/http://www.dominicpettifer.co.uk/Blog/45/automapper---a-custom-type-converter-that-exposes-a- गंतव्य-मूल्य –

+3

बस एक नोट के रूप में, आपको <> Mapper.Map (objectA, ObjectB); में पर्याप्त प्रकारों को निर्दिष्ट करने की आवश्यकता नहीं है – DomenicDatti

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