さまざまなプロジェクトを使用して、アプリケーションをいくつかの異なるレイヤーに分割します。
- 私の AppName.Data プロジェクトは、すべてのデータ アクセス (つまり、データベースからのデータの取得) を処理します。
- 私の AppName.Models プロジェクトには、アプリに必要なすべてのビュー モデル クラスとその他のモデル クラスが含まれています。
- 私の AppName.Web プロジェクトは、単なる MVC Web アプリです。
- 私の AppName.Services プロジェクトは、すべてのビジネス ロジックと、Web レイヤーとデータ レイヤー間の通信を処理します。ビュー モデルの構築、データ検証の処理などを行います。実際のデータベース オブジェクトでコントローラー アクション メソッドを呼び出すことはありません。私は常にビューモデルを使用しています。そのビューモデルには、ビューを作成するために必要なものだけが含まれています。
したがって、この例では、これが読み取り専用ビューである場合に行うことは、次のような AboutPersonDisplayViewModel を作成することです。
public class AboutPersonDisplayViewModel
{
public int PersonID { get; set; }
public string Name { get; set; }
public string Surname { get; set; }
public string HairColor { get; set; }
}
そして、それが編集可能なビューである場合、次のような別のビュー モデルがあります。
public class AboutPersonEditViewModel
{
public int PersonID { get; set; }
public string Name { get; set; }
public string Surname { get; set; }
public int HairColorID { get; set; }
public IDictionary<int, string> HairColorOptions { get; set; }
}
データベースでは、person テーブルと hairColor テーブルの間に関係が必要です。したがって、ビュー モデルを構築するときは、検索したい ID の人を取得し、その人の情報を AboutPersonViewModel に入力し、ナビゲーション プロパティを使用して Person.HairColor に移動し、保存されている ID の髪の色を取得します。 .
次に、保存すると、サービス レイヤーがデータを検証し、選択した髪の色を適切にマッピング/保存します。
これが役立つことを願っています