0
Automapper
을 4.2.1에서 5.0.0으로 업그레이드했습니다. WebApi2 프로젝트에서 정적 API를 사용하고 있으며 매핑이 제대로 작동하도록 노력하고 있으므로 this SO answer을 시도해 보았습니다.최신 릴리스에서 Automapper 정적 API 사용?
public static class AutoMapping
{
public static void Config()
{
Mapper.Initialize(main =>
{
var config = new MapperConfiguration(cfg =>
{
cfg.CreateMissingTypeMaps = true;
cfg.CreateMap<MyModel, MyDto>().ReverseMap();
});
config.AssertConfigurationIsValid();
});
}
}
위 Global.asax
에서 호출됩니다
:
는 그러나, 나는 예외를 얻을. 적절한 구성으로 초기화를 호출하십시오.
Automapper
을 초기화하는 올바른 방법은 무엇입니까? 지금 매핑을 위해 모든 컨트롤러를 변경해야합니까? 첫째
EDIT1은, 위의 코드는 다음과 같아야합니다 :
public static IMappingExpression<TSource, TDestination> IgnoreUnmapped<TSource, TDestination>(this IMappingExpression<TSource, TDestination> expression)
{
var typeMap = Mapper.Configuration.FindTypeMapFor<TSource, TDestination>();
if (typeMap != null)
{
foreach (var unmappedPropertyName in typeMap.GetUnmappedPropertyNames())
{
expression.ForMember(unmappedPropertyName, opt => opt.Ignore());
}
}
return expression;
}
: Mapper.Initialize(cfg =>
{
cfg.CreateMissingTypeMaps = true;
cfg.CreateMap<MyModel, MyDto>().ReverseMap();
});
Mapper.Configuration.AssertConfigurationIsValid();
둘째, 문제는 내가없는 속성을 무시하는 데 사용하는 다음의 방법에있을 수 있습니다
위의 방법이 Initialize
내에서 호출 되었기 때문에 'Mapper.Configuration'이 아직 구성되지 않았다고 가정합니다. 매핑을 설정합니다.
Automapper 자체 내에 위의 방법 대신 사용할 수있는 기존 방법이 있습니까?
EDIT2
의 구문은 다음 작업을겠습니까?
cfg.CreateMap<MyModel, MyDto>().ReverseMap().ForAllMembers(opt => opt.Ignore());
이 함수를 Global.asax에서 어떤 이벤트에서 호출 했습니까? –