4

AutoMapper を使用して、Linq-To-SQL で生成されたエンティティを DTO にマッピングしています

最初に単体テストを作成したとき、特定のマップを (静的構成クラスを介して) セットアップして、1 つのタイプの EntitySet を汎用の List に (およびその逆に) 変換しました。

Mapper.CreateMap<EntitySet<Member>, List<MemberDTO>>(); 
Mapper.CreateMap<List<MemberDTO>, EntitySet<Member>>(); 

リストの変換を削除すると (AutoMapper がこれらを自動的に変換することを理解すると)、単体テストは引き続き機能しましたが、クロールが遅くなりました。非常に遅く、各テストを実行するのに文字通り 1 分かかりました。

リスト マッピングを再度追加した後、単体テストは通常​​のパフォーマンス速度に戻りました。

リストの変換をマップする必要があるように、リストの自動変換をオフにする方法はありますか? Map を含めなかった場合に AutoMapperException をスローするようにしたいと思います。これらのパフォーマンスの問題を回避したいと思います。

さらに悪いことに、DTO に基づいてマッピング構成クラスを自動的に作成するための簡単なコード生成テンプレートを作成することになるかもしれません。そうすれば、私は何も見逃すことはありません。

ありがとう。

4

2 に答える 2

1

CreateMap 呼び出しは、テストと運用コードの両方を含む AppDomain ごとに複数回行う必要はありません。構成が一度だけ行われるように、静的メソッドをダブルチェックしてロックします。構成は静的にキャッシュされるため、複数回実行する必要はありません。

ただし、Member -> MemberDTO およびその逆のマップが設定されていると仮定すると、これらの変換は「正常に機能する」はずです。List<> -> EntitySet<> に対していくつかのスモーク テストを実行し、正常に動作することを確認します。

于 2009-09-18T01:02:57.263 に答える
0

自動変換をオフにすることはできないことがわかりました。私はいたるところを見てきましたが、それを行う実際の方法はないようです。

その間、私はすべてのマッピングを手作業で書き出しています。

于 2009-10-01T15:00:31.123 に答える