DALのAutoMapper:Mapper.Reset()を使用する場合

automapper data-access-layer reset separation-of-concerns
DALのAutoMapper:Mapper.Reset()を使用する場合

生成されたデータアクセスレイヤーでAutoMapperを使用しています。 それはうまくいきます。 AutoMapperを別のレイヤーで使用し、 `Mapper.CreateMap()`を使用してDALで作成されたマッピングがまだ存在していることを認識すると、少し混乱しました。 これらを削除する `Mapper.Reset()`が表示されますが、DALを他のレイヤーに心配させる必要はありません。 DALでマッピング操作の前後に `Mapper.Reset()`を配置するのがベストプラクティスでしょうか? または、これらのDALマッピングにデフォルト以外のキーを与えて、それらを永続させるが、他のレイヤーでAutoMapperの使用を妨げないようにする方法はありますか

注:DALでのAutoMapperの使用には、他のレイヤーが使用すべきではない多くの.ForMember(…​)呼び出しなどの特定のオプションがあります( `Mapper.Reset()`がなければこれらのオプションを再利用します)。

  1  2


ベストアンサー

AutoMapperは、シングルトン/シングルインスタンスとして機能します。 それは本当に重要ですか?

編集:これはあなたを助けるかもしれませんhttps://stackoverflow.com/questions/2183401/using-profiles-in-automapper-to-map-the-same-types-with-different-logic異なるロジックを持つ型]

他のレイヤーがDALクラスについてそれほど心配していない場合、DALクラスのインスタンスでMapを呼び出すことはないでしょう。

Reset()を呼び出した場合、DALクラスは次にマッピングを行う必要があるときにそれらを再宣言する必要があり、余分な非常に不必要なオーバーヘッドが追加されます。

編集:すべてのDAL呼び出しの開始時にResetを呼び出すと、単一のスレッドデータアクセス戦略のみを使用できます。 別のDALプロジェクトのマッピングの途中でResetを呼び出すと、明らかにこれを破ります。したがって、すべてのDALメソッドをロックする必要があります。

これはAutomapperを使用する方法ではないため、これらのプロファイルを調べるか、すべてを一緒に使用しないかのどちらかに傾くでしょう。

また、たくさんの多数のマッピングが行われていることの何が悪いのか、サンプルコードを投稿できますか? DALの呼び出し元に応じて、2つのタイプ間に異なるマッピング戦略がありますか?

2


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