2016-07-29 7 views
0

私はこの問題を発見しましたが、この特定の問題は見つかりませんでした。私は複数の型を同じエンティティにマッピングすることに関するスレッドを見つけましたが、これは問題ではありません。AutoMapper - 同じメソッドで2つの型をマップできません

最初に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(); 
関連する問題