2011-04-21 64 views
1

我怀疑有一些AutoMapper的简单配置来获得我想要的映射,但我不知道。任何人都可以将我指向正确的方向吗?实体框架继承的自动映射器

这里是我的情况:

我定义表每类型继承实体框架与发布的超类型和子类型的文章(+ 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); 

UPDATE

我已经修订此,作为问题的一部分,我的通用仓库返航超类型的实体,而不是子类型。现在,可以编译域到视图模型映射,但它仍将nulls映射到子类型字段,同时正确映射超类型字段。

回答

1

害怕我没有足够的代表评论来查询你输入的内容,所以请原谅我,如果这是不公平的。

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

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

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

如果这不是,那么也许你可以发布你希望发布的类的规格从>到。

+0

是的,我已经修复了类规范的问题。谢谢。 – Faust 2011-04-30 06:00:14