【问题标题】:Automapper with Entity Framework inheritance具有实体框架继承的 Automapper
【发布时间】:2011-04-21 08:29:40
【问题描述】:

我怀疑 AutoMapper 有一些简单的配置来获得我想要的映射,但我不知道。谁能指出我正确的方向?

这是我的情况:

我在实体框架中定义了 table-per-type 继承,其父类型为 Publication,子类型为 Article(+ 5 个其他子类型)

ArticleAdmin 是我的 (MVC) 视图模型,它继承自 PublicationAdmin 视图模型。

将视图模型映射到域子类型可以正常工作:

Mapper.CreateMap<ArticleAdmin, Article>();
var _Article = Mapper.Map<ArticleAdmin, Article>(article);;

所以我添加文章没有问题。

但走另一条路似乎并不那么容易。这不会填充子类型字段:

Mapper.CreateMap<Article, ArticleAdmin>();
var _Article = Mapper.Map<Article, ArticleAdmin>(_article_entity);

更新

我已经对此进行了修改,因为问题的一部分是我的通用存储库正在返回超类型的实体,而不是子类型。现在域到视图模型的映射可以编译,但它仍然将空值映射到子类型字段,同时正确映射超类型字段。

【问题讨论】:

    标签: asp.net-mvc entity-framework automapper


    【解决方案1】:

    恐怕我没有足够的代表让 cmets 查询您输入的内容,所以如果这离题了,请原谅我。

    您尝试映射的类是否遵循相同的规范?

    如果没有,那么您可能需要在 CreateMap 中进行一些配置。您可以使用 ForMember 来配置每个属性的源和目标。

    Mapper.CreateMap<Article, ArticleAdmin>()
    .ForMember(dest => dest.DestProperty, opt => opt.MapFrom(src => src.SourceProperty))
    

    如果不是这样,那么也许您可以发布您要发布的课程的规范>到。

    【讨论】:

    • 是的,类规范存在问题,我已修复。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2011-05-19
    • 2010-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多