問題はかなりシンプルですが、解決策が見えません。マルチプロジェクトソリューションで1つ以上のAutoMapperの設定
私のソリューションでは、私はDAL層(クラスライブラリ)、DTO層(クラスライブラリ)、MVCプロジェクトを持っています。
アイデアは、MVCアプリケーションがDTOレイヤーからアイテムを要求し、そのレイヤーがDALレイヤーからアイテムを取得するという考え方です。十分に簡単です。
DTOレイヤでは、私はそれらを管理するためのコンテキストを持つリポジトリを持っています。したがって、MVCアプリケーションはDTOコンテキストのインスタンスを作成し、適切なリポジトリからDTOエンティティを取得します。
問題が発生しました。
私はAutoMapperを使用して基になるエンティティをDTOにマップし、MVCアプリケーションではDTOをViewModelsにマッピングして戻すことを計画しました。
DTO層のコンテキストのコンストラクタでは、スタティックRegisterMappings()
を呼び出して、基礎となるエンティティとDTOの間のマッピングを登録します。これまでのところ問題はありません。
しかしMVCアプリのGlobal.asax
に、私も(別のクラスからのDTO層の1に)RegisterMappings()
を呼び出して、まだ私はMVCのアプリでDTOへのViewModelからマップしようとしたとき、私はMissing type map configuration or unsupported mapping
例外を取得。
AssertConfigurationIsValid()
によってスローされた例外を見ると、DTOとMVCアプリケーション層ではなく、DAL層とDTO層のマッピングが期待通りに見えていることがわかります。
どのように私は同じソリューション内の2つの別々のプロジェクトでautomapperを使用するのですか?
アイデアは大変ありがとうございます。あなたがクラスをマッピングしたいとき
// DTO project
MapperConfiguration dtoConfig;
dtoConfig = new MapperConfiguration(cfg => {
cfg.CreateMap<Foo, Bar>();
cfg.AddProfile<DtoProfile>();
});
// MVC project
MapperConfiguration mvcConfig;
mvcConfig = new MapperConfiguration(cfg => {
cfg.CreateMap<Foo, Bar>();
cfg.AddProfile<MvcProfile>();
});
はその後に適切な設定を使用します。
AutoMapper 5以降を使用していますか?次に、私はあなたが別々に各設定を保存することができると思う静的な 'Mapper'呼び出しを使用する代わりに' config.CreateMapper(); 'を使って各レイヤーのマッパーを作成します。 – stuartd
@stuartdこれを回答児に変更します。完璧に私のために働いた。 –
完了、ありがとう... – stuartd