7

最新のASP.NETMVC3プロジェクトでエンティティフレームワークを使用しています。DBファーストであるため、エンティティフレームワークはデータベースモデルを生成します。私のサービス(ビジネス)レイヤーでは、サービスメソッド、ビュー、およびコントローラーを生成するためにScaffold(MvcScaffolding)を使用します。足場は、ドメインモデルも生成します。これらのモデルをビューにバインドするときは、ビューモデルを使用します。

つまり、3種類のモデルを使うことになりました。これでいい?ビューモデルはプレゼンテーション層に保持され、ドメインモデルはビジネス層に保持され、データモデルはリポジトリ層に保持されます。

感想を聞かせてください。

4

2 に答える 2

4

それは問題ないように聞こえ、確かにいくつかの利点があります。

  1. もちろんマッピング方法を除いて、ドメインモデルに影響を与えることなく、データベースモデルを最初から再作成できます。これら2つを1つにマージできると主張する人もいますが、それはセットアップに大きく依存します。

  2. 個別のビューモデルを使用すると、ビューに合わせて新しいビューモデルを自由に変更および作成できます。また、プロキシの読み込みが遅れるのを防ぐのにも役立ちます。

多くの人は、Dtoオブジェクトのセットも持っているでしょう。これらは、キャッシュ用のオブジェクトのセットとして、また複数のUIがある場合、たとえばWindowsサービスとしても役立ちます。

Automapperは、マップするモデルが非常に多いという苦痛を和らげるために非常に人気があります。

于 2012-11-20T09:06:38.260 に答える
3

すべてのレベルでモデル間に違いがある場合に適しています。このモデルで行うのは、変換や処理を行わずに、あるレイヤーモデルから別のレイヤーモデルにデータを配置することだけである場合、冗長なモデルを削除できます。一般的に、ドメインモデルは冗長になります。

ビューを変更せずにデータベースからデータベースモデルを再作成できるようにする必要があるため、ビューモデルとデータベースモデルを分離して作成する必要があります。

于 2012-11-20T09:07:58.593 に答える