MVC/EF の関係全体を理解しようとしています。データベースとのみ対話するエンティティ モデルを作成する場合 (エンティティ モデルをビューに渡すべきではないため)、次にモデルのクラス、最後にビュー モデルをすべて以下に示します。私の唯一の質問は、2 番目のクラスを持つことは冗長に思えることです。私が見た例で唯一の違いは、ビューと対話しているため、そのクラスにデータ注釈を適用することです。エンティティ オブジェクトがビュー レイヤーで公開されていないことを確認することがなぜそれほど重要なのですか?
私はまだ実際にプロジェクトを書き始めていませんが、エンティティ モデルを使用してデータベースとやり取りし、それを ProductModel にキャストしてビューに渡すと仮定すると、これは正しいロジックですか?
エンティティ モデル:
public class Product
{
[Key()]
public int ID { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public double Price { get; set; }
}
モデル:
public class ProductModel
{
public int ID { get; set; }
[StringLength(50)]
[Required(ErrorMessage = "Product Name is required.")]
[Display(Name = "Product Name")]
public string Name { get; set; }
public string Description { get; set; }
public double Price { get; set; }
}
ビューモデル:
public class ProductViewModel
{
Product myProduct { get; set; }\
//Plus any other properties I may need for the view.
}
アップデート:
私が読んでいる例では、次のように DBContext も設定されています。それでは、ProductModel クラスは役に立たないのでしょうか?
public class MyAppContext : DbContext
{
public MyAppContext()
: base("name=DBConnection")
{
}
public DbSet<Product> Products { get; set; }
}