2017-09-04 32 views
1

嵌套的子对象的属性映射我有当前地图:如何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(); 

我得到的错误是:

System.ArgumentException: '表达' DEST => dest.BaseContentItem .TopicTag'必须解析为顶级成员,并且不能解析任何子对象的属性。改为在子类型 类型或AfterMap选项上使用自定义解析器。'

如何映射这个?

+1

您需要ForPath而不是ForMember。 –

回答

0

如果有人遇到问题,我很奇怪。

我在单独的映射配置文件中正确创建了所有孩子的地图。问题在于其中一个子模型本身有一个TopicTag类型,所以它会导致堆栈溢出。我删除了这个不必要的字段,现在它正确映射。

1

这应该工作。使用ForPath代替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

这不提供问题的答案。一旦你有足够的[声誉](https://stackoverflow.com/help/whats-reputation),你将可以[对任何帖子发表评论](https://stackoverflow.com/help/privileges/comment);相反,[提供不需要提问者澄清的答案](https://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-c​​an- I-DO-代替)。 - [来自评论](/ review/low-quality-posts/18013879) – Mamun