2013-01-10 34 views
5

पर गुण छोड़ देता है तो मैं निम्नलिखित वर्गों को परिभाषित किया है:Automapper पहली कॉल पर सही ढंग से नक्शे लेकिन दूसरी कॉल

public class ImageIndexModel { 
    public string Description {get; set;} 
    public string InstrumentNumber {get; set;} 
} 

public class ImageEditModel : ImageIndexModel { 
    public int TotalCount = 0; 
} 

public class Clerk { //This is actually a class defined by LinqToSql 
    public string Description {get; set;} 
    public string InstrumentNo {get; set;} 
} 

अब, मेरी global.asax में, मैं Application_Start() में निम्नलिखित मानचित्रण परिभाषित किया है।

Mapper.CreateMap<ImageIndexModel, Clerk>() 
    .ForMember(dest => dest.InstrumentNo, 
       opt => opt.MapFrom(src => src.InstrumentNumber)); 

अन्त में, मेरी नियंत्रकों में से एक में, मैं निम्नलिखित कोड है:

var _existing = new Clerk(); 
var _default = new ImageEditModel() { 
       InstrumentNumber = "12345678", Description = "Test" 
       }; 
Mapper.Map(_default, _existing); 

पहली बार मैं अपने नियंत्रक पर कार्रवाई करते हैं और इस मानचित्रण फोन चलाया जाता है, सब कुछ ठीक काम करता है और InstrumentNumberClerk ऑब्जेक्ट के InstrumentNo पर सही ढंग से मैप किया गया है। हालांकि, दूसरी बार एक्शन कहलाता है, InstrumentNo मैप नहीं किया जाता है। InstrumentNumber निश्चित रूप से एक मूल्य है लेकिन InstrumentNo शून्य है।

कोई विचार यहां क्या हो रहा है?

+2

आपका कोड, जैसा कि प्रश्न में दर्ज किया गया है, कई बार चलाने पर भी ठीक काम करता है। तो Automapper समस्या नहीं प्रतीत होता है। मुझे Linq2SQL- जेनरेटेड क्लास या एएसपी.NET में इसका उपयोग करने के तरीके के साथ कुछ संदेह है। अधिक कोड के बिना, यह कहना मुश्किल है कि क्या गलत हो सकता है। मैं linq2sql- जेनरेटेड कक्षाओं के प्रॉपर्टी सेटर्स के अंदर ब्रेकपॉइंट्स सेट करूंगा। – PatrickSteele

उत्तर

1

मुझे एक बार विपरीत समस्या थी, जहां बहुत सारे मैपिंग हो रहे थे। इसे here for potentially other reasons वर्णित के रूप में mapper.reset() को कॉल करके हल किया गया था। शायद आपके आवेदन में कुछ और आपके मैपर को आपके नीचे से रीसेट कर रहा है जैसे कि यह अब मैपिंग को हल नहीं कर रहा है जिसे आप मानते हैं (और थोड़ी देर के लिए करता है)? दूसरे प्रश्न की कुंजी यह है कि ऑटोमैपर सिंगलटन है, और इसलिए आपके कोड का एक और भाग लोड या देर से बांध सकता है और बिना आपको जानने के इसे खराब कर सकता है।

+0

इसके साथ आपकी मदद के लिए धन्यवाद। – RHarris