AutoMapper carte à partir de la source de collection imbriquées à une autre collection
EDIT: le Titre est incorrect, je suis en train de carte à partir d'une source liste imbriquée modèle de la liste source.
Je vais avoir du mal à essayer de mapper une liste à l'autre répertoriés dans un modèle imbriqué. Genre de et nations unies-aplatir de toutes sortes. Le problème est que je ne sais pas comment faire les mappages.
Voici mon set up suivi mes tentatives ont échoué à la cartographie:
public class DestinationModel
{
public DestinationNestedViewModel sestinationNestedViewModel { get; set; }
}
public class DestinationNestedViewModel
{
public List<ItemModel> NestedList { get; set; }
}
public class SourceModel
{
public List<Item> SourceList { get; set; }
}
L'emplacement de l'Élément et ItemModel ont déjà une cartographie définie entre eux
Je ne peux pas le faire de cette façon...
Mapper.CreateMap<SourceModel, DestinationModel>()
.ForMember(d => d.DestinationNestedViewModel.NestedList,
opt => opt.MapFrom(src => src.SourceList))
ERREUR:
'Expression d => d.DestinationNestedViewModel.NestedList " doit se résoudre à haut niveau de membre.Nom du paramètre: lambdaExpression
J'ai ensuite essayé quelque chose comme ceci:
.ForMember(d => d.DestinationNestedViewModel,
o => o.MapFrom(t => new DestinationNestedViewModel { NestedList = t.SourceList }))
Le problème, c'est
NestedList = t.SourceList.
Ils contiennent chacun des différents éléments, ItemModel et Élément respectivement. Donc, ils doivent être mappés.
Comment cette carte?
- Je ne suis pas sûr si je comprends bien, mais je pense que vous avez besoin pour créer un mappage d'un Élément à ItemModel, donc AutoMapper sait Élément de la carte des objets à ItemModel objets.
- Il y a une cartographie déjà défini entre l'Élément et ItemModel, mais la cartographie n'est pas d'être déclenchée car NestedList appartient à une DestinationModel qui, à son tour, appartient à DestinationNestedViewModel. Automapper ne peut pas gérer les 2 niveaux de modèles lors de la cartographie (au moins pas de la façon que j'ai essayé)
Vous devez vous connecter pour publier un commentaire.
Je pense que vous voulez quelque chose comme ceci:
Puis tout ce que vous devez avoir à faire est d'appeler
Mapper.Map
entreSource
etDestination
: