2009-12-21 15 views
15

के साथ अपवाद प्राप्त करना मैं एक विधि का परीक्षण कर रहा हूं जो मेरे डोमेन से एक वर्ग को एसक्यूएल कक्षा में मैप करने के लिए ऑटोमैपर का उपयोग करता है। असल में, कक्षाएं और मैपिंग नीचे हैं (सप्लायर एलिग्बिलिटीएलोक्टेड एक एल 2 एस ऑटो जेनरेटेड क्लास है)।ऑटोमैपर

public class SupplierEligibilityTransactionByQuantity 
{ 
    public decimal Eligibility { get; private set; } 
    public decimal CoreValue { get; private set; } 
    public int? TransactionId { get; private set; } 
    public SupplierTransactionStatus Status { get; private set; } 
    public int? DebitId { get; set; } 
    public int ManifestId { get; private set; } 
} 

public partial class SupplierEligibilityAllocated 
{ 
private int _SupplierEligibilityCreditId; 
private int _ManifestId; 
private System.Nullable<int> _QuantityApplied; 
private System.Nullable<decimal> _AmountApplied; 
private System.Nullable<decimal> _CoresReservedByAmount; 
private System.DateTime _InsertDate; 
private EntityRef<Manifest> _Manifest; 
private EntityRef<SupplierEligibilityCredit> _SupplierEligibilityCredit; 
} 

private static void Map_SupplierEligibilityTransactionByQuantity_To_SupplierEligibilityAllocated() 
{ 
    Mapper.CreateMap<EligibilityTransactionByQuantity, SupplierEligibilityAllocated>() 
     .ForMember(dest => dest.SupplierEligibilityCreditId, opt => opt.MapFrom(src => src.TransactionId)) 
     .ForMember(dest => dest.ManifestId, opt => opt.MapFrom(src => src.ManifestId)) 
     .ForMember(dest => dest.QuantityApplied, opt => opt.MapFrom(src => Convert.ToInt32(src.Eligibility))) 
     .ForMember(dest => dest.AmountApplied, opt => opt.Ignore()) 
     .ForMember(dest => dest.CoresReservedByAmount, opt => opt.Ignore()) 
     .ForMember(dest => dest.InsertDate, opt => opt.MapFrom(src => DateTime.UtcNow)) 
     .ForMember(dest => dest.Manifest, opt => opt.Ignore()) 
     .ForMember(dest => dest.SupplierEligibilityCredit, opt => opt.Ignore()); 
} 

जब विधि मैपिंग निष्पादित करती है, हालांकि, यह निम्न अपवाद फेंकता है।

Trying to map SupplierEligibilityTransactionByQuantity to SupplierEligibilityAllocated. 
Missing type map configuration or unsupported mapping. 
Exception of type 'AutoMapper.AutoMapperMappingException' was thrown. 

at AutoMapper.MappingEngine.AutoMapper.IMappingEngineRunner.Map(ResolutionContext context) 
at AutoMapper.MappingEngine.Map(Object source, Type sourceType, Type destinationType) 
at AutoMapper.MappingEngine.Map[TSource,TDestination](TSource source) 
at AutoMapper.Mapper.Map[TSource,TDestination](TSource source) 

मैं सत्यापित है कि मैं परीक्षण से पहले मानचित्रण बनाने रहा हूँ और मैं बिना किसी समस्या के Mapper.AssertConfigurationIsValid() कहा जाता है। मैंने बिना किसी समस्या के मैपिंग मैन्युअल रूप से भी किया। किसी के पास यह विचार है कि इसका क्या कारण हो सकता है?

+0

any1 के लिए वहाँ हमेशा संभावना यू IgnoreDataMember attr डाल रहा है, और इसका मतलब है कि उर कक्षा के बाहर यू यह नहीं कर सकते देखते हैं, कि इस पूर्व – bresleveloper

उत्तर

9

ऐसा लगता है कि Mapper.CreateMap

करने के लिए अपने फोन पर गलत प्रकार को निर्दिष्ट कर रहे हैं निम्नलिखित की तरह कुछ कर रही प्रयास करें:

Mapper.CreateMap<SupplierEligibilityTransactionByQuantity, SupplierEligibilityAllocated>() 
+0

रवींद्र के साथ मेरी समस्या थी, मैं स्पष्ट अनदेखी की। मैं गलत प्रकार का मानचित्रण कर रहा था, जो अपवाद बताता है और क्यों AssertConfigurationIsValid() में कोई समस्या नहीं थी। – JChristian

0

Mapper.Map() का उपयोग कर किसी भी एक अपने मानचित्रण वर्ग & तालिका/दुकान प्रक्रिया की जांच अगर ठीक से ।

public static CustomerLedgerViewModel ToModel(this DJBL_tblCustomerCurrentLedger obj) 
{ 
    return Mapper.Map<DJBL_tblCustomerCurrentLedger, CustomerLedgerViewModel>(obj); 
} 

public static DJBL_tblCustomerCurrentLedger ToEntity(this CustomerLedgerViewModel model) 
{ 
    return Mapper.Map<CustomerLedgerViewModel, DJBL_tblCustomerCurrentLedger>(model); 
} 
संबंधित मुद्दे