2017-09-04 1 views
1

Je carte actuelle:Comment cartographier les propriétés de l'objet enfant imbriqués dans Automapper

CreateMap<Article, ArticleModel>() 
       .ForMember(dest => dest.BaseContentItem, opts => opts.MapFrom(src => src.BaseContentItem)) 
       .ForMember(dest => dest.BaseContentItem.TopicTag, opts => opts.MapFrom(src => src.BaseContentItem.TopicTag)) 
       .ForMember(dest => dest.MainImage, opts => opts.MapFrom(src => src.MainImage)) 
       .ReverseMap(); 

L'erreur que je reçois est:

System.ArgumentException: 'Expression' dest => dest.BaseContentItem .TopicTag 'doit résoudre au membre de niveau supérieur et pas les propriétés de l'objet enfant. Utilisez un résolveur personnalisé sur le type enfant ou l'option AfterMap à la place. '

Comment puis-je mapper ceci?

+1

Vous avez besoin de ForPath au lieu de ForMember. –

Répondre

0

Si quelqu'un a un problème, j'ai eu étrange.

J'ai créé des cartes pour tous les enfants correctement dans des profils de mappage distincts. Le problème était que l'un de ces modèles enfant avait lui-même un type de TopicTag, ce qui faisait déborder la pile. J'ai supprimé ce champ inutile et il mappe correctement maintenant.

1

Cela devrait fonctionner. Utilisez ForPath au lieu de ForMember

`CreateMap<Article, ArticleModel>() 
       .ForMember(dest => dest.BaseContentItem, opts => opts.MapFrom(src => src.BaseContentItem)) 
       .ForPath(dest => dest.BaseContentItem.TopicTag, opts => opts.MapFrom(src => src.BaseContentItem.TopicTag)) 
       .ForMember(dest => dest.MainImage, opts => opts.MapFrom(src => src.MainImage)) 
       .ReverseMap();` 
+0

Ceci ne fournit pas de réponse à la question. Une fois que vous avez suffisamment [réputation] (https://stackoverflow.com/help/whats-reputation) vous pourrez [commenter n'importe quel article] (https://stackoverflow.com/help/privileges/comment); Au lieu de cela, [fournissez des réponses qui ne nécessitent pas de précisions de la part du demandeur] (https://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-can- je-fais-à la place). - [De l'examen] (/ review/low-quality-posts/18013879) – Mamun