Ich habe darüber nachgedacht, wie Vererbung in AutoMapper
verwenden, aber ich kämpfe, um es vollständig mit Linq
arbeiten. Hier ist mein Code:AutoMapper Vererbung und Linq
ich meine Abbildungen hier definiert haben:
CreateMap<Article, ArticleDetailsViewModel>()
.Include<Article, ArticleNewsItemDetailsViewModel();
CreateMap<Article, ArticleNewsItemDetailsViewModel>();
ArticleDetailsViewModel
ist eine Basisklasse von ArticleNewsItemDetailsViewModel
.
Hier liegt das Problem, wenn ich habe:
CreateMap<ArticleNewsItem, ArticleNewsItemDetailsViewModel>();
alle Eigenschaften im View-Modell automatisch abbilden würde, weil sie die gleichen Namen wie ihr Linq Objekt Pendant sind. jedoch, weil ich die Article => ArticleNewsItemDetailsViewModel
Mapping verwende dies nicht möglich ist, stattdessen würde ich jede definieren müssen ein als:
.ForMember(x => x.Property1, opt => opt.MapFrom(src => src.ArticleNewsItem.Property1)
Ich dachte über alle Eigenschaften von ArticleNewsItemDetailsViewModel
in eine neue Ansicht Modell bewegen und diese Klasse mit eine Eigenschaft innerhalb der ArticleNewsItemDetailsViewModel
und solange es eine Zuordnung zwischen diesen beiden Objekten gibt, dann wird es funktionieren, aber es fühlt sich nicht sehr sauber an.
Gibt es eine Möglichkeit, dies zu vermeiden?
Ich glaube nicht, dass dies funktioniert, weil es eine Eigenschaft ist, die auf eine Eigenschaft innerhalb eines verschachtelten Objekts zuordnet.Keine Eigenschaft, die ein Objekt auf ein verschachteltes Objekt abbildet – ediblecode
Entschuldigung, ich habe es falsch verstanden. Sie können ein Objekt keiner geschachtelten Eigenschaft zuordnen, ohne eine benutzerdefinierte Zuordnung über die Methoden ".ConstructUsing()" oder ".ConvertUsing()" zu erstellen. Sie sollten wirklich für wie mappen. Hier ist ein gutes Beispiel: http://automapper.codeplex.com/wikipage?title=Nested%20Mappings – NinjaNye
Vielen Dank für das Verständnis der Frage. Es ist jedoch nicht erforderlich, das Mapping in ConstructItem zu definieren, da dies mit .ForMember geschehen und auf geschachtelte Eigenschaften zugreifen kann. – ediblecode