与FluentValidations有什么样的验证?

时间:2017-11-20 09:52:11

标签: c# .net validation fluentvalidation

在面向数据的应用程序的上下文中,它使用数据库:

我只使用FluentValidations来验证Id是正数,或者参数不是null没有碰到数据库的东西

但过了一段时间后,我想知道为什么我不会验证实际查询数据库的内容。所以我决定进一步验证,现在我的Validator不仅验证指定的Id是正数,还实体存在

这是验证者的目标吗?我滥用了吗?验证者是否应该检查复杂的业务规则?

2 个答案:

答案 0 :(得分:1)

恕我直言,使用FluentValidator来检查业务规则是完全没问题的。但最好将业务规则与简单验证分开。例如,如果它的ASP.NET应用程序通用验证应该在表示层中执行(如使用ModelState),但业务规则应该在域层中发挥作用(例如在某些服务或decorator中)。

您可以找到这些链接有用:

  1. ValidateModelAttribute
  2. Validate command using Decorator pattern
  3. Simple Injector(fast DI container, great for decorators)

答案 1 :(得分:0)

有两种方法可以进行此类验证:
1.创建一个类并从ProperyValidator继承并将其用于实体验证类。

public class UniqueValidator<T> : PropertyValidator where T:class
{
 //inject the repository
 protected override bool isValid(PropertyValidatorContext context){
  //check the validity
 }
}

2.创建方法直接指向EntityValidation类

public class EntityValidation : AbstractValdiation<Entity>{
 //inject the repository


 //your current validations

 public bool UniqueValue(Entity instance){
   //query to validate
 }
}