Benutze ich die Funktionalität von Automapper 2.0 Include korrekt?

8

Entweder ich nicht, oder es funktioniert nicht ... Ich habe eine einzelne Quellklasse, die ich mehreren Ansichten zuordnen möchte, die voneinander erben.

Grundsätzlich ist die Basisklasse das Detail, und die Kindklasse ist Bearbeiten oder Aktualisieren, die dieselben Daten wie Detail verwenden, sowie ein paar andere Felder, um ihre eigenen Listen oder was auch immer zu verwalten.

Hier sind die Karten, die ich benutze:

%Vor%

Dann, wenn ich Mapper.Map (Ticket) eine der Eigenschaften, die MapFrom verwenden, nicht ausgewertet werden, werden sie nur mit den Werten enden, die sie gehabt hätten, wenn es keine festgelegte Zuordnung gegeben hätte.

Also, was ist hier falsch?

    
CodeRedick 14.01.2012, 17:31
quelle

2 Antworten

7

Als alternative Lösung, wenn Sie Mapper.Map nicht zweimal aufrufen möchten. Sie können die allgemeinen Zuordnungen von Detail in eine Erweiterungsmethode verschieben:

%Vor%

Verwenden Sie dann diese Erweiterungsmethode, wenn Sie die Mapper Ticket -> Update und Ticket -> Edit registrieren:

%Vor%

Dann können Sie Map normal verwenden:

%Vor%     
nemesv 15.01.2012, 12:43
quelle
5
  

Benutze ich die Funktionalität von Automapper 2.0 Include richtig?

Nein - Wenn Sie .Include verwenden, erwartet AutoMapper, dass sich die Zielklassen in einer ähnlichen Hierarchie wie die Quellklassen befinden (weitere Informationen hierzu finden Sie unter hier ). Mit anderen Worten, wenn Sie zu verschiedenen Unterklassen von Ticket bis Detail , Update und Edit zuordnen, wäre Include geeignet.

Dies scheint in Ihrem Fall nicht hilfreich zu sein. Ich würde empfehlen, die Überladung von .Map zu verwenden, die ein vorhandenes Objekt annimmt und modifiziert. Auf diese Weise müssen Sie nur ein Mapping für den Basistyp definieren:

%Vor%     
Andrew Whitaker 14.01.2012 22:47
quelle

Tags und Links