1

Telerik ORMを使用してドメインモデルを生成し、DALと呼ばれるクラスライブラリにこれらを配置しました。次に、MVC4WebアプリケーションであるUIプロジェクトがあります。これには、リポジトリとモデルがあります。ここでのモデルは、特にビューにデータを表示するためのビューモデルです。

今私の質問は次のとおりです。

  1. リポジトリはビューモデルを直接返す必要がありますか?
  2. ビューモデルをエンティティに変換する必要がありますか?
  3. オートマッパーを使用する際のオーバーヘッドは何ですか?どこで使うべきですか?

automapperを使用してリポジトリ内のビューモデルに変換しない場合、オブジェクトの各部分にデータを取り込むためにdbへの異なる呼び出しがある可能性があります。ページのビューモデルには、連絡先のリストと選択された連絡先が含まれる場合があります。選択した連絡先にはリポジトリへの1つの呼び出しが入力され、連絡先のリストには別の呼び出しが入力されます。また、マッパーがリポジトリレベルにある場合、「名前とID」のみに関心がある場合は、性別などの「余分なフィールド」をすべて削除する方がよいのではないでしょうか。

ビューモデルはUIに固有であり、データレイヤーに関与するべきではないため、リポジトリはビューモデルを返さないようにする必要があると聞きました。これは本当ですか?

4

2 に答える 2

2

リポジトリはプレーンドメインオブジェクトを返す必要があります。ORMマッパーは、これらをデータソースに密接にマッピングされたクラスとして出力する必要があります。リポジトリ/コントローラーをWebサービス、Webアプリケーション、その他のプロジェクトなどのさまざまな形式に簡単にプラグインできるようにするには、UI属性を適用しないでください。

Automapperは、DIコンテナーのように、リポジトリー・インターフェースの複数の実装をターゲットにしている場合に最適です。ドメインオブジェクトをストレージクラスオブジェクトとの間で変換する場合に非常に便利です。基本的に、翻訳クラスの必要性を減らします。

MVC.Model領域では、UIでモデルとして使用するドメインオブジェクトクラスの複製を作成する必要がある場合があります。プロジェクトが成長するにつれて、特に検証、表示、ローカリゼーションなどにさまざまな属性を使用している場合に、この利点がわかります。Automapperなどのツールは、命名規則が非常に近いクラスがある場合に生産性を大幅に向上させます。

Mvc.Controllerクラスでマッパーを使用してデータ/コントローラーからMVC.Modelsに変換すると、生産性も向上します。

重要なのは、アプリケーションの境界を越えてクラスのプロパティ名と一致させることです。

于 2013-03-07T23:14:48.547 に答える
1

これは現在議論されている問題です。 Jimmy Bogardの提案は、Automapper を使用して、ドメイン モデルのみをビュー モデルにマップすることです。バック ビュー モデルをドメイン モデルにフラット化しすぎたい場合は、Value Injecterを試してみることをお勧めします。

于 2013-03-07T22:47:40.100 に答える