私が理解しているように、ドメインモデルはデータ(集合体ルート)のみを記述するクラスです。それらはPOCOであり、外部のライブラリを参照しません(特別なことは何もありません)。
一方、ビューモデルは、ドメインモデルオブジェクトと、のようなすべてのインターフェイス固有のオブジェクトを含むクラスですSelectList
。ViewModelにはが含まれusing System.Web.Mvc;
ます。
リポジトリはデータベースからデータを引き出し、ドメインモデルオブジェクトを介してデータを提供します。 どのメカニックまたはデバイスがビューモデルオブジェクトを作成し、データベースからそれらを作成しますか? データベースにアクセスできる工場でしょうか?System.Web.Mvcなどのビュー固有のクラスをリポジトリにブリードしますか?他に何かありますか?
たとえば、都市のドロップダウンリストがある場合は、ビューモデルオブジェクトのルートで、DomainModel参照のすぐ隣にあるSelectListオブジェクトを参照します。
public class CustomerForm {
public CustomerAddress address {get;set;}
public SelectList cities {get;set;}
}
都市はデータベースから取得され、選択リストオブジェクトの形式である必要があります。個別の都市だけを抽出するための特別なRepositoryメソッドを作成せずに、適切なデータ型を使用できるように、冗長な2番目のSelectListオブジェクトのみを作成することをお勧めします。