J'ai la carte actuelle:
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 j'obtiens est:
System.ArgumentException: 'Expression' dest => dest.BaseContentItem.TopicTag 'doit être résolu en membre de niveau supérieur et non en fonction des propriétés d'un objet enfant. Utilisez plutôt un résolveur personnalisé sur le type enfant ou l'option AfterMap. '
Comment puis-je cartographier cela?
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();
Si quelqu'un a un problème, je l'ai eu étrange.
J'ai créé des cartes pour tous les enfants correctement dans des profils de cartographie distincts. Le problème était que l'un de ces modèles enfants avait un type de TopicTag lui-même, il a donc fait déborder la pile. J'ai supprimé ce champ inutile et il mappe correctement maintenant.