我正在创建我的第一个MVC项目,并且很好奇哪个是将我的Code First Entity Classes公开给我的视图模型的正确方法。我有一个像这样的实体类:
public class Product
{
public int Id { get; set; }
public int CategoryId { get; set; }
[StringLength(50)]
public string ProductName { get; set; }
public Nullable<System.DateTime> DateAdded { get; set; }
[StringLength(50)]
public string AddedBy { get; set; }
}
传递对象或传入属性的新类是否更好?
public class ProductViewModel
{
Product myProduct { get; set; }
}
public class ProductViewModel
{
public int Id { get; set; }
public int CategoryId { get; set; }
public string ProductName { get; set; }
public DateTime DateAdded { get; set; }
public string AddedBy { get; set; }
}
答案 0 :(得分:1)
最好选择第二个选项。将数据库类用作模型通常是不良做法。你的第一个选择基本上就是这样,除了它将它包装在另一个无意义的类中。
我要做的是让他们都实现接口,这样如果您想要更改它,只需更改界面,然后可以更改这两个实例。
public class ProductViewModel : IProduct
{
public int Id { get; set; }
public int CategoryId { get; set; }
[StringLength(50)]
public string ProductName { get; set; }
public DateTime DateAdded { get; set; }
[StringLength(50)]
public string AddedBy { get; set; }
}
答案 1 :(得分:0)
我肯定会选择第二种选择。它提供了与域模型(实体)和视图模型的明确分离。分离这些模型非常重要,因为:
当然在这个例子中它有点微不足道,但是当你在视图中构建更多逻辑时,它将非常重要。
答案 2 :(得分:0)
最好传递整个实体类。这样,如果类发生了变化,您就不必更新ViewModel中的属性。