2016-06-28 2 views
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()); 
+0

이 함수를 Global.asax에서 어떤 이벤트에서 호출 했습니까? –

답변