Asp.net mvc 具有实体框架继承的自动映射

Asp.net mvc 具有实体框架继承的自动映射,asp.net-mvc,entity-framework,automapper,Asp.net Mvc,Entity Framework,Automapper,我怀疑AutoMapper有一些简单的配置来获得我想要的映射,但我没有任何线索。谁能给我指出正确的方向吗 以下是我的情况: 我已经在实体框架中定义了每类型表继承,其中包含发布的超类型和项目的子类型(+5个其他子类型) ArticleAdmin是我的(MVC)视图模型,它继承自PublicationAdmin视图模型 将viewmodel映射到域子类型效果良好: Mapper.CreateMap<ArticleAdmin, Article>(); var _Article = Mapp

我怀疑AutoMapper有一些简单的配置来获得我想要的映射,但我没有任何线索。谁能给我指出正确的方向吗

以下是我的情况:

我已经在实体框架中定义了每类型表继承,其中包含发布的超类型和项目的子类型(+5个其他子类型)

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

将viewmodel映射到域子类型效果良好:

Mapper.CreateMap<ArticleAdmin, Article>();
var _Article = Mapper.Map<ArticleAdmin, Article>(article);;
Mapper.CreateMap();
var_Article=Mapper.Map(Article);;
所以我在添加文章方面没有问题

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

Mapper.CreateMap<Article, ArticleAdmin>();
var _Article = Mapper.Map<Article, ArticleAdmin>(_article_entity);
Mapper.CreateMap();
var\u Article=Mapper.Map(\u Article\u entity);
更新


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

恐怕我没有足够的评论代表来查询您输入的内容,因此请原谅我的做法

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

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

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

如果不是这样的话,也许你可以把你想要发布的类的规范从>发布到。

恐怕我没有足够的评论来查询你输入的内容,所以请原谅我,如果这太离谱了

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

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

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

如果不是这样的话,也许你可以将你想要发布的类的规范从>发布到。

是的,类规范有一个问题,我已经解决了。谢谢。是的,课程规格有问题,我已经解决了。谢谢