2016-07-29 16 views
0

Ich habe gesucht, aber dieses spezielle Problem nicht gefunden. Ich habe Threads bezüglich der Zuordnung mehrerer Typen zu derselben Entität gefunden, aber das nicht ... Und ich denke nicht, dass dies ein Problem sein sollte.AutoMapper - Kann nicht zwei Typen in derselben Methode zuordnen

Wenn ich zuerst ein EventDto einem EventUserViewModel zuordnen, funktioniert es. Wenn ich später ein EventDto auf ein EventViewModel abbilde, stürzt es ab, weil AutoMapper denkt, ich möchte es wieder einem EvenUserViewModel zuordnen?

Wenn ich die Reihenfolge ändern, tritt das gleiche Problem auf, nur umgekehrt.

Hier Code bereitstellen; Es ist im Grunde das abgespeckte Beispiel, wo das Problem auftritt.

// 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(); 

Die letzte Zeile ist, wo es fehlschlägt. AutoMapper versucht, EventDtos EventUserViewModels statt EventViewModel zuzuordnen, obwohl ich die Typen genau festlege.

+0

Ich stelle mir diese durch die statische api auf der Mapper verursacht wird. Es wurde Anfang des Jahres obsolet gemacht [Entfernen der statischen API von AutoMapper] (https://losetechies.com/jimmybogard/2016/01/21/removing-the-static-api-from-automapper/) –

Antwort

0

Gelöst durch Erstellen einer neuen Instanz von AutoMapper. Ich bin mir sicher, dass es einen besseren Weg dafür gibt.

Schlusscode:

// 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(); 
Verwandte Themen