在具有 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 对象的目的。还是应该在"模型"文件夹中重新创建域对象?- 那不是重复的。如果您有任何指示,请告诉我。

在具有 POCO 对象的 MVC 4 应用程序中 ASP.Net 何处添加注释

您不应该重新创建它们,而应该创建仅包含所需字段的模型,这样您就可以向它们添加注释。

你说这是重复,但实际上它是关注点的分离。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。