在具有 POCO 对象的 MVC 4 应用程序中 ASP.Net 何处添加注释
本文关键字:ASP Net 何处 注释 添加 应用程序 POCO 对象 MVC | 更新日期: 2023-09-27 18:33:27
>我有一个适度的应用程序,我首先创建了一个域层,在其中定义了我的 POCO 对象,然后我创建了一个数据访问层,该层使用 EF Code First 将这些域对象保存到数据库。现在我需要这个项目的 UI,并且我创建了一个 MVC 4 项目,我需要创建一个强类型视图,所以我需要一个模型传递给视图。
我的问题是我需要在哪里重新创建模型文件夹中的域对象,以便我可以向它们添加数据注释。例如,我有一个客户
public class Customer
{
public int CustomerId { get; set; }
public int RetailerId { get; set; }
public string CustomerName { get; set; }
public string CustomerEmail { get; set; }
public int PointsBalance { get; set; }
public decimal CashBalance { get; set; }
public ICollection<LoyaltyCard> LoyaltyCards { get; set; }
public virtual Retailer BusinessName { get; set; }
}
零售商对象如下:
public class Retailer
{
public int RetailerId { get; set; }
public string BusinessName { get; set; }
public string EmailsAddress { get; set; }
public int PhoneNumber { get; set; }
public ICollection<Location> BusinessLocations { get; set; }
public ICollection<Reward> Rewards { get; set; }
public Industry Industry { get; set; }
}
我是否应该在域层中向当前域对象添加注释 - 如果我这样做,这并不违反使域对象成为 POCO 对象的目的。还是应该在"模型"文件夹中重新创建域对象?- 那不是重复的。如果您有任何指示,请告诉我。
您不应该重新创建它们,而应该创建仅包含所需字段的模型,这样您就可以向它们添加注释。
你说这是重复,但实际上它是关注点的分离。UI 对 POCO 的了解越少越好(在理想情况下,您的 UI 甚至不知道它们,它们会通过一些业务逻辑层/API 检索模型的实例。
例如,看看下面的CustomerViewModel
。注意到缺少一些属性?好吧,我知道这是一个粗略的例子,但是在添加新客户/显示它们时,您可能实际上并不想输入所有属性,因此这是一个非常适合此目的的精简版本:
public class CustomerViewModel
{
[Required]
public int CustomerId { get; set; }
[Required]
public int RetailerId { get; set; }
[Required]
public string CustomerName { get; set; }
[Required]
public string CustomerEmail { get; set; }
}
这就是ViewModels的用武之地。这些模型用于在视图中显示域模型中的数据,但仅包含显示视图所需的属性。您可以向这些属性添加数据注释,这将负责验证。
我建议使用AutoMapper将域模型映射到ViewModels。