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