繁体   English   中英

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

[英]Where to add Annotations in ASP.Net MVC 4 Application with POCO objects

我有一个适度的应用程序,首先创建一个定义POCO对象的域层,然后创建一个数据访问层,使用EF Code First将这些域对象持久保存到数据库中。 现在,我需要一个到该项目的UI,并且已经创建了MVC 4项目,我需要创建一个强类型的视图,因此需要一个模型来传递给该视图。

我的问题是我需要在哪里在Model文件夹中重新创建域对象,以便可以向它们添加数据注释。 例如,我有一个客户

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; }
}

这就是ViewModel的用处。这些模型用于在视图中显示域模型中的数据,但仅包含显示视图所需的属性。 您可以将数据注释添加到这些属性中,以进行验证。

我建议使用AutoMapper将您的域模型映射到ViewModels。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM