automapper - 必须解析为顶级成员

标签 automapper

我尝试了以下 map :

CreateMap<ThemeNewModel, CreateThemeOrder.ThemeModel>()
    .ForMember(d => d.Subject.Id, o => o.MapFrom(s => s.Subject));

Subject.IdSubject 都是int 类型。但是,我收到以下错误:

Expression 'd => Convert(d.Subject.Id)' must resolve to top-level member and not any child object's properties. Use a custom resolver on the child type or the AfterMap option instead.Parameter name: lambdaExpression

我正在使用 AutoMapper 2.0。如果没有 AfterMap,我不能解决这个问题吗?

最佳答案

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 旨在将复杂类型扁平化为扁平模型/ View 模型类型,因此您的 ThemeNewModel 太复杂了,也许您需要重新考虑您的设计。

关于automapper - 必须解析为顶级成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14837338/

相关文章:

automapper - 从 Automapper 映射 IQueryable 类

c# - 当我调用 SaveChanges 时,没有任何内容保存回数据库?

c# - 使用自动映射器映射异步结果

c# - 使用 AutoMapper 的默认映射

c# - AutoMapper 条件实体映射

AutoMapper 如何从 ObjectId 映射嵌套对象

c# - 我把这个自动映射放在哪里?

automapper - 我们真的需要Automapper吗?

c# - 在 AutoMapper 中使用上下文值进行投影

c# - 如何在 AutoMapper 中配置条件映射?