2016-07-29 3 views
0

나는이 특정 문제를 발견했으나 조사하지 않았습니다. 여러 유형을 같은 엔티티에 매핑하는 것과 관련한 스레드를 찾았지만이 것은 아닙니다 ... 그리고 이것이 문제가되어야한다고 생각하지 않습니다.AutoMapper - 같은 방법으로 두 가지 유형을 매핑 할 수 없습니다.

먼저 EventDto를 EventUserViewModel에 매핑하면 작동합니다. 나중에 EventDto를 EventViewModel에 매핑 할 때 AutoMapper가 EvenUserViewModel에 다시 매핑하려고한다고 생각하기 때문에 충돌이 발생합니다.

주문을 변경하면 동일한 문제가 발생하며 반대의 경우에만 처리됩니다.

여기에 일부 코드를 입력하십시오. 그것은 근본적으로 문제가 발생하는 부분을 제거한 것입니다.

// Mapping an EventDto to a EventUserViewModel 
EventUsersViewModel viewModel = Mapper.Map<EventUsersViewModel>(eventService.GetEventDto(id)); 

// Getting a list of EventDtos 
var myEvents = eventService.GetMyEvents(User.Identity.GetUserId(), User.IsInRole(RoleNames.ADMIN_USER)); 

// Mapping all EventDtos to EventViewModels 
List<EventViewModel> eventViewModelList = myEvents.Select(Mapper.Map<EventViewModel>).ToList(); 

마지막 줄은 실패한 곳입니다. AutoMapper는 유형을 엄격하게 지정하더라도 EventDtos를 EventViewModel 대신 EventUserViewModels에 매핑하려고합니다.

+0

나는이가 매퍼에 정적 API에 의해 발생 상상한다. AutoMapper에서 정적 API 제거하기 (https://lostechies.com/jimmybogard/2016/01/21/removing-the-static-api-from-automapper/) 올해 초에 쓸모 없게되었습니다. –

답변

0

AutoMapper의 새 인스턴스를 생성하여 해결되었습니다. 이렇게하는 더 좋은 방법이있을 것이라고 확신합니다.

최종 코드 :

// Mapping an EventDto to a EventUserViewModel 
EventUsersViewModel viewModel = Mapper.Map<EventUsersViewModel>(eventService.GetEventDto(id)); 

// Getting a list of EventDtos 
var myEvents = eventService.GetMyEvents(User.Identity.GetUserId(), User.IsInRole(RoleNames.ADMIN_USER)); 

// Mapping all EventDtos to EventViewModels 
Mapper mapper = Mapper.Configuration.CreateMapper(); 
List<EventViewModel> eventViewModelList = myEvents.Select(mapper.Map<EventViewModel>).ToList(); 
관련 문제