我想我找到了问题的原因,但不知道如何解决,场景是这样的:
我使用了 automapper 5.2,Entity Framework 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
所有属性为空,当我a.CreateMissingTypeMaps = true;
在初始化中删除时,它是工作,dest
所有属性都可以映射。
然后我发现source
类型是System.Data.Entity.DynamicProxies.query_template_80DE6B32EB08D5DFDD560580BB004DAD6A7FF27B94A3517A6BB4044B01FB8272
,所以我想当我设置 CreateMissingTypeMaps 时,autoMapper 会自动创建地图,而不是我的创建
建议了很多帖子context.Configuration.ProxyCreationEnabled = false;
,但我使用 LazyLoad。并且不想删除 CreateMissingTypeMaps ,因为我有很多普通类型要映射。
任何人都可以帮助我吗?