当社で AutoMapper の使用を開始したいと考えています。私のチームメンバーがそれで何の利益も見ないという問題。同じことを行う自分自身の拡張メソッドを記述できる場合に、追加の抽象化が必要な理由の主な主張。
では、私が反対することができる理由は何ですか?
当社で AutoMapper の使用を開始したいと考えています。私のチームメンバーがそれで何の利益も見ないという問題。同じことを行う自分自身の拡張メソッドを記述できる場合に、追加の抽象化が必要な理由の主な主張。
では、私が反対することができる理由は何ですか?
Automapper に対する私の 2 つの最大の議論:
はい、プロパティ間でデータを移動する拡張メソッドを作成できます。しかし、型を超えてデータを送信するためだけに無数のマッピング行を書く必要があるのはなぜですか?
Property1 = original.Property1; Property2 = original.Property2;
特に次のようなことをしている場合:
Property1 = (MyEnum)Enum.Parse(typeof(MyEnum), original.Property1);
書くのに時間がかかる厄介な配管コードであり、便利な機能を構築するなど、このようなことをいじるなど、時間をもっと有効に使うことができます。AutoMapper は、最初のケースを無料で完了するために必要なすべての規則と、形状を縮小したり型を変更したりするより複雑なシナリオを管理するための単純なパターンを提供します。
ここでも、独自のメソッドを作成できます。ただし、正しく実行している場合は、記述したカスタム コードに固有のすべてのケースをカバーする対応するテストがあります。 または、マップをロードして、マッピング構成が正しいかどうかを AutoMapper に尋ねることもできます。
Automapper に対する私の注意点:
これがマッピング コードの万能薬であると言っているわけではありませんが (癖があります)、ソリューションに適合するかどうかを確認するためにスパイキングに費やした時間は、投資する価値があります。
AutoMapper は、ある型を別の型にマップするだけのコードがたくさんある場合に便利です。
これを自問してください。ハードコーディングされたマッピングや、AutoMapper のようなフレームワークのセットアップなど、開発と保守にかかる時間を短縮できるものはどれですか?
次の主題は、自動マッピング フレームワークがシナリオに役立つかどうかを判断するのに役立ちます。
トランザクショナル アプリ (3NF データベースに対する多数の CrUD 操作) の一般的な課題は、3NF データベースをオブジェクト モデル (つまり、ビジネス オブジェクト/クラス) にマップし、その後再びプレゼンテーション層にマップする必要があることが多いことです。データベースはデータをタプル (行と列) として保存し、アプリではデータはタプル (つまり、グリッド) として表示されることがよくありますが、オブジェクト モデルはグラフです。つまり、2 次元 (db) から 3 (ビジネスロジック) を 2 (グリッドとして表示) に戻します。ORM マッパーは 3NF をオブジェクトに変換するのに役立ちますが、ユーザーの画面で表現するためにオブジェクトをフラット化するには、プレゼンテーション固有のクラスを作成する必要があります。
Automapper は、このようなシナリオや他の多くのシナリオで、あるタイプ (ビジネス オブジェクト) から別のタイプ (データ転送オブジェクト) へのマッピングに最適です。