Я думаю, что я нашел причину этой проблемы, но я не знаю, как решить эту проблему, сцена выглядит так:AutoMapper 5, когда набор CreateMissingTypeMaps правда ForMember не работает
я использовал automapper 5,2, Entity рамки 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);
i get dest
все атрибуты равны нулю, когда я удаляю a.CreateMissingTypeMaps = true;
в Initialize, это работа, dest
все атрибуты могут быть картой.
тогда я нашел source
типа является System.Data.Entity.DynamicProxies.query_template_80DE6B32EB08D5DFDD560580BB004DAD6A7FF27B94A3517A6BB4044B01FB8272
, поэтому я думаю, что, когда я установил CreateMissingTypeMaps, autoMapper авто создать карту, а не мои создания
много сообщений предложило context.Configuration.ProxyCreationEnabled = false;
но я использую LazyLoad. и не нужно удалять CreateMissingTypeMaps, потому что у меня есть много нормального типа для отображения.
Кто-нибудь может мне помочь?
благодаря Jorge, он не работает для меня, я также прошу в GitHub, https://github.com/AutoMapper/AutoMapper/issues/1954, что Не используйте CreateMissingTypeMaps, если вы не знаете типы во время выполнения – Gavin