2011-04-21 61 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