我想我找到了問題的原因,但我不知道如何解決它, 場景是這樣的:AutoMapper 5時集CreateMissingTypeMaps真正ForMember不行
我用automapper 5.2,實體框架6和使用CreateMissingTypeMaps=true
救我CreateMap代碼 我也有特殊的地圖,所以初始化這樣
Mapper.Initialize(
a =>
{
a.CreateMissingTypeMaps = true;
a.CreateMap<query_template, QtGridUdfSearchTemplate>()
.ForMember(dest => dest.GridId, opt => opt.MapFrom(src => src.GRID_ID))
.ForMember(dest => dest.Guid, opt => opt.MapFrom(src => src.QUERY_TEMPLATE_GUID))
.ForMember(dest => dest.TemplateName, opt => opt.MapFrom(src => src.TEMPLATE_NAME))
.ForMember(dest => dest.CreatedBy, opt => opt.MapFrom(src => src.CREATED_BY))
.ForMember(dest => dest.IsDefault, opt => opt.MapFrom(src => src.IS_DEFAULT))
.ForMember(dest => dest.IsOffset, opt => opt.MapFrom(src => src.IS_OFFSET));
}
);
和地圖代碼代碼
var source = DbContext.Set<query_template>().Find(keyValue);
var dest = Mapper.Map<query_template, QtGridUdfSearchTemplate>(source);
我得到的dest
所有屬性都爲空,當我在Initialize中刪除a.CreateMissingTypeMaps = true;
時,它是工作的,dest
所有屬性都可以映射。
然後我找到了source
類型是System.Data.Entity.DynamicProxies.query_template_80DE6B32EB08D5DFDD560580BB004DAD6A7FF27B94A3517A6BB4044B01FB8272
,所以我覺得當我設置CreateMissingTypeMaps,autoMapper自動創建一個地圖,不是我創造
很多帖子建議context.Configuration.ProxyCreationEnabled = false;
但我使用LazyLoad。並且不想刪除CreateMissingTypeMaps,因爲我有許多要映射的正常類型。
任何人都可以幫助我嗎?
感謝豪爾赫,它不適合我,我也要求在GitHub上,https://github.com/AutoMapper/AutoMapper/issues/1954,即表示除非在運行時不知道類型,否則不要使用CreateMissingTypeMaps – Gavin