如何在 Razor 视图中验证业务实体而不是数据实体

How to validate Business Entity in Razor view instead of Data Entity

我正在开发一个分为 4 层的 ASP.NET 应用程序。

  1. Business Layer
  2. Data Access Layer
  3. WCF Services Client
  4. ASP.NET MVC5 application

我正在使用 AutoMapper 从域 class 映射到业务 class 以及其他方式。我正在使用数据注释:

[StringLength(250)]
[Required(ErrorMessage = "Required Title")]
[Display(Name = "Function Title")]

在视图 ASP.NET Razor 页面中进行了翻译,即通过传递强类型并对其进行验证来创建记录。我的问题是如何在我传递业务 class 以查看强类型并且我不希望数据依赖于业务层或 ASP.Net MVC 应用程序的地方实现这一点?

DAL 实体

[Table("Navigation_Functions")]
public class Navigation_FunctionsEntity
{
    public Navigation_FunctionsEntity()
    {

    }
    [Key]
    public int Function_ID { get; set; }

    [StringLength(250)]
    [Required(ErrorMessage = "Required Title")]
    [Display(Name = "Function Title")]
    public string FunctionName { get; set; }

    [Required(ErrorMessage = "Required Hierarchy Level")]
    [Display(Name = "Hierarchy Level")]
    public int Hierarchy_Level { get; set; }

    public ICollection<Navigation_FunctionHierarchy> Navigation_FunctionHierarchy { get; set; }
    public ICollection<Navigation_FunctionInAction> Navigation_FunctionInAction { get; set; }
    public ICollection<Navigation_FunctionInController> Navigation_FunctionInController { get; set; }

    public ICollection<Navigation_FunctionController> Navigation_FunctionController { get; set; }
 }

企业实体

public class Navigation_Functions
{

    public int Function_ID { get; set; }

    public string FunctionName { get; set; }

    public int Hierarchy_Level { get; set; }

    public ICollection<Navigation_FunctionHierarchy> Navigation_FunctionHierarchy { get; set; }
    public ICollection<Navigation_FunctionInAction> Navigation_FunctionInAction { get; set; }
    public ICollection<Navigation_FunctionInController> Navigation_FunctionInController { get; set; }

    public ICollection<Navigation_FunctionController> Navigation_FunctionController { get; set; }
}

我的建议是不要将代码组织成这样的层。这是很多箍,但没有真正的优势。事实上,随着时间的推移,我发现像这样的分层架构实际上阻碍了代码库的重构和发展。图层是为了蛋糕,而不是软件。

https://vimeo.com/131633177

我也质疑 WCF 在您的图片中的价值,除了增加延迟和使您的请求变慢之外,我不知道它为解决方案添加了什么。