我有当前的地图:
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:'Expression'dest =&gt; dest.BaseContentItem.TopicTag'必须解析为顶级成员和 不是任何子对象的属性。在孩子身上使用自定义解析器 改为输入类型或AfterMap选项。'
我该如何映射?
答案 0 :(得分:21)
这应该有效。使用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();
答案 1 :(得分:0)
如果有人有问题,我就很奇怪。
我在不同的映射配置文件中正确地为所有孩子创建了地图。问题是其中一个子模型本身就有一种TopicTag,所以它使堆栈溢出。我删除了那个不必要的字段,现在它正确映射。