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