繁体   English   中英

如何在Automapper中映射嵌套的子对象属性

[英]How to map nested child object properties in 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:'Expression'dest => dest.BaseContentItem.TopicTag'必须解析为顶级成员而不是任何子对象的属性。 请改用子类型或AfterMap选项上的自定义解析器。

我该如何映射?

这应该工作。 使用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();

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

我在不同的映射配置文件中为所有孩子正确创建了地图 问题是其中一个子模型本身就有一种TopicTag,所以它使堆栈溢出。 我删除了那个不必要的字段,现在它正确映射。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM