C# 数据优先法中的验证
我正在使用MVC4和实体框架实现一个项目 我使用数据优先的方法。我正在为各种业务逻辑的模型实现一个分部类 我的问题是如何对属性设置验证规则。如下图所示C# 数据优先法中的验证,c#,asp.net-mvc-4,entity-framework-4,C#,Asp.net Mvc 4,Entity Framework 4,我正在使用MVC4和实体框架实现一个项目 我使用数据优先的方法。我正在为各种业务逻辑的模型实现一个分部类 我的问题是如何对属性设置验证规则。如下图所示 [Required] public string FirstName { get; set; } 如果我在属性(实体框架生成模型)上手动添加此代码“[必需]”。 然后,如果我需要更改数据库更改的模型。然后我所有的验证规则都消失了 如果不使用代码优先的方法,我如何解决这个问题。正如您所发现的,您永远不应该编辑生成的文件,因为在重新生成文件时更改会
[Required]
public string FirstName { get; set; }
如果我在属性(实体框架生成模型)上手动添加此代码“[必需]”。
然后,如果我需要更改数据库更改的模型。然后我所有的验证规则都消失了
如果不使用代码优先的方法,我如何解决这个问题。正如您所发现的,您永远不应该编辑生成的文件,因为在重新生成文件时更改会丢失 与将实体用作视图模型相比,更好的体系结构是在视图和实体之间插入单独的视图模型。视图模型应该与视图的需求紧密对应,并且经常从几个底层实体检索数据 然后,属性将显示在视图模型属性上,而不是实体上 视图模型还可以弥补应用程序中存在大量分配漏洞的风险,如果在实体中使用延迟加载,这些漏洞尤其危险。另一种解决方法(使用CodeFirst)是使用流畅的验证。CustomerValidator将始终指向重新生成的Customer类(除非您明显更改Customer类名称)
使用FluentValidation;
公共类CustomerValidator:AbstractValidator{
公共客户验证人{
RuleFor(customer=>customer.name).NotNull();
}
}
using FluentValidation;
public class CustomerValidator : AbstractValidator<Customer> {
public CustomerValidator {
RuleFor(customer => customer.Surname).NotNull();
}
}