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