2016-07-29 2 views
1

우리는 Automapper를 버전 3에서 4.2.1까지 여러 프로젝트에서 수년간 사용하고있었습니다. 우리는 DTO에 엔티티를 매핑하는 데 문제가 없었으며 그 반대도 마찬가지였습니다. 버전 5.0.2로 업그레이드 한 후 갑자기. 이제 순환 참조가있는 모든 객체가 Map 메서드에서 System.StackOverflowException을 발생 시켰고 원시 속성을 가진 다른 객체는 잘 매핑되었습니다. 4.2.1 버전으로 롤백 했으므로 제대로 작동합니다.Automapper를 버전 4.x.x에서 5로 업그레이드 한 후 System.StackOverflowException을 얻었습니다.

매퍼가 순환 참조를 처리 할 수있는 구성이 있어야하며 그렇지 않으면 잘못된 방식으로 사용됩니다 (사용되지 않는 방식). 내가 CreateMap 방법을 사용하여 맵을 만들 때, 우리는 단지 순환 참조에 대한 참조를 보존하고 우리가 원하는 정확히 수행 PreserveReferences라는 이름의 다른 방법을 호출 할 필요가 있음을 발견 뒷조사 후

답변

1

. 우리의 코드는 다음과 같습니다 :

_config = new AutoMapper.MapperConfiguration(cfg => 
{ 
    foreach(var mapping in _mappings) 
    { 
     cfg.CreateMap(mapping.Source, mapping.Destination).PreserveReferences(); 
    } 
}); 

_mapper = _config.CreateMapper(); 

이 작은 변화가 곧 우리에게 재앙이되었습니다! 다행히도 우리는 그 해결책을 찾았습니다. 이 문제에 대한 토론 here이 있습니다.

관련 문제