2016-04-12 16 views
5

OtomatikMapper'ı Profillerle kullanıyorum ve çok iyi çalışıyor. Son zamanlarda, CreateMissingTypeMaps yapılandırmasını buldum ve anladığım gibi çalışıyorsa, gelişmemimi daha hızlı hale getirecek, gerekli olmayan bir kez basit eşlemeler oluşturuyor.CreateMissingTypeMaps ve AddProfile ile AutoMapper

Yapılandırmamıza AddProfile ile bir Profil ekledim ve bundan sonra CreateMissingTypeMaps yapılandırmasını yaptım.

Ör:

------- oluşturma yapılandırma ------------

var config = new MapperConfiguration(cfg => 
{ 
    cfg.AddProfile<PersonServiceMapperProfile>(); 
    cfg.CreateMissingTypeMaps = true; 
}); 

------- benim PersonServiceMapperProfile İçinde - ----

internal class PersonServiceMapperProfile : Profile 
{ 
    protected override void Configure() 
    { 
     CreateMap<PersonData, ProfileViewModel>().ConvertUsing<PersonDataToProfileViewModel>(); 
    } 
} 

CreateMissingTypeMaps yapılandırması true olarak ayarlandığında, Profil artık çalışmıyor. Özel eşlemem aranmıyor.

Bu soru nasıl çözülür?

+0

Bu hala oluyor mu? – Brad

+1

@Brad Ben sadece v3.3'ten v6'ya yükseltildim ve bana oluyor. Ben bir CreateMap ile uğraşmak zorunda kalmayacak kadar çok yerde DynamicMap kullanarak nasıl uzaklaştığımı anlamaya çalışıyorum (tam anlamıyla CreateMap'e 100 tane boş çağrı yapacağım). Anladığımda buraya geri göndereceğim ... – pbarranis

cevap

0

Geçenlerde 6'ya AutoMapper 3'ten yükselttikten sonra aynı sorun koştum ve bu problemin çözümünü ortaya AutoMapper için GitHub'dan bir Sorun bulundu:

AddConditionalObjectMapper (

) yoludur öyleyse anonim tipleriniz eşlenir, ancak varsayılan eşlemelerinizin üzerine yazılmaz. Bunu, CreateMissingtypeMaps ile kullanmayın, çünkü bu, koşulun üzerine yazar. CreateMissingTypeMaps temel olarak AddConditionalObjectMapper() 'dir. ((S, d) => true); Ancak Source: Issue 2008, TylerCarlson1

, bu "basit eşleştirmeleri" için kullanılmamalıdır.
CreateMissingTypeMaps özelliği, yalnızca eşlemelerin, EF Dinamik Proxy'lerle olduğu gibi, derleme zamanına kadar bilinmediğinde kullanılması içindir. Bilinen türler için kullanılmamasının nedeni, CreateMap ve derleme özelliklerinin yazım hataları, eşleşmeyen adlar, yeni veya kaldırılmış özellikler vb. Nedeniyle hatalı eşleştirmelere karşı hızlı bir şekilde sınamanızı ve engellemenizi sağlamasıdır. amaçlanan derleme özelliği, bu yüzden en iyi şekilde kullanın.