Entity Framework継承を使用したオートマッパー

asp.net-mvc automapper entity-framework
Entity Framework継承を使用したオートマッパー

AutoMapperを使用して、必要なマッピングを取得するための簡単な構成があると思われますが、手がかりはありません。 誰かが私を正しい方向に向けることができますか?

これが私の状況です。

Entity Frameworkで、スーパータイプのPublicationとサブタイプのArticle(+ 5の他のサブタイプ)でタイプごとのテーブル継承を定義しました

ArticleAdminは、PublicAdminビューモデルを継承する私の(MVC)ビューモデルです。

ビューモデルをドメインのサブタイプにマッピングするとうまくいきます:

Mapper.CreateMap();
var _Article = Mapper.Map(article);;

それで、記事を追加しても問題ありません。

しかし、他の方法で行うのはそれほど簡単ではないようです。 これにより、サブタイプのフィールドは設定されません。

Mapper.CreateMap();
var _Article = Mapper.Map(_article_entity);

更新

問題の一部として、私の汎用リポジトリがサブタイプではなくスーパータイプのエンティティを返していたため、これを修正しました。 これで、ドメインからビューモデルへのマッピングはコンパイルされますが、スーパータイプフィールドを正しくマッピングしながら、サブタイプフィールドにnullをマッピングします。

  1  1


ベストアンサー

入力した内容を照会するためのコメントに十分な担当者がいないので、これで問題ない場合はご容赦ください。

マップしようとしているクラスは同じ仕様に従っていますか?

そうでない場合は、CreateMapで設定を行う必要がある場合があります。 ForMemberを使用して、各プロパティのソースと宛先を構成できます。

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

そうでない場合は、投稿先のクラスの仕様を投稿できます。

1


タイトルとURLをコピーしました