我尝试了以下地图:
CreateMap<ThemeNewModel, CreateThemeOrder.ThemeModel>()
.ForMember(d => d.Subject.Id, o => o.MapFrom(s => s.Subject));
Subject.Id
和Subject
都属于int
类型。但是,我收到以下错误:
表达式'd =&gt;转换(d.Subject.Id)'必须解析为顶级成员而不是任何子对象的属性。在子类型或AfterMap选项上使用自定义解析器。参数名称:lambdaExpression
我正在使用AutoMapper 2.0。我不能在没有AfterMap
的情况下解决这个问题吗?
答案 0 :(得分:3)
ThemeNewModel.Subject
的类型是什么?假设它为ThemeSubject
,您可能会成功:
CreateMap<ThemeSubject, CreateThemeOrder.ThemeModel>()
.ForMember(d=>d.Id, o => o.MapFrom(s->s.Subject));
CreateMap<ThemeNewModel, CreateThemeOrder.ThemeModel>()
.ForMember(d=>d.Subject, o => o.MapFrom(s => s);
如果以上操作不起作用,您应该遵循异常中的建议,并创建自定义解析器。
无论如何,automapper旨在将复杂类型展平为平面模型/视图模型类型,因此ThemeNewModel
过于复杂,您可能需要重新考虑您的设计。