0

我想我找到了问题的原因,但不知道如何解决,场景是这样的:

我使用了 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 ,因为我有很多普通类型要映射。

任何人都可以帮助我吗?

4

1 回答 1

0

而不是 put ForMember(...),尝试:

ForMember<ObjectThatYouWantMap>(*Expression*);
于 2017-04-07T13:29:05.643 回答