FluentValidations 可以做什么类型的验证?
What kind of validations to do with FluentValidations?
在面向数据的应用程序上下文中,使用数据库:
我使用 FluentValidations
只是为了验证 Id 是否为正数,或者参数不是 null
:没有命中的东西数据库.
但过了一段时间后,我想知道为什么我不验证 实际查询数据库 的东西。所以我决定进一步验证,现在,我的 Validator
不仅验证指定的 Id 是一个正数,而且 还验证实体存在 .
这是验证者的目标吗?我在滥用它吗?验证器是否也应该检查复杂的业务规则?
有两种方法可以进行这种验证:
1.Create 一个 class 并继承自 ProperyValidator 并将其用于实体验证 class.
public class UniqueValidator<T> : PropertyValidator where T:class
{
//inject the repository
protected override bool isValid(PropertyValidatorContext context){
//check the validity
}
}
2.Create 方法直接指向 EntityValidation class
public class EntityValidation : AbstractValdiation<Entity>{
//inject the repository
//your current validations
public bool UniqueValue(Entity instance){
//query to validate
}
}
恕我直言,使用 FluentValidator
来检查业务规则完全没问题。但最好将业务规则与简单验证分开。例如,如果它是 ASP.NET 应用程序,一般验证应在表示层执行(如使用 ModelState
),但业务规则应在域层中发挥作用(例如,在某些服务或 decorator ).
您会发现这些链接很有用:
在面向数据的应用程序上下文中,使用数据库:
我使用 FluentValidations
只是为了验证 Id 是否为正数,或者参数不是 null
:没有命中的东西数据库.
但过了一段时间后,我想知道为什么我不验证 实际查询数据库 的东西。所以我决定进一步验证,现在,我的 Validator
不仅验证指定的 Id 是一个正数,而且 还验证实体存在 .
这是验证者的目标吗?我在滥用它吗?验证器是否也应该检查复杂的业务规则?
有两种方法可以进行这种验证:
1.Create 一个 class 并继承自 ProperyValidator 并将其用于实体验证 class.
public class UniqueValidator<T> : PropertyValidator where T:class
{
//inject the repository
protected override bool isValid(PropertyValidatorContext context){
//check the validity
}
}
2.Create 方法直接指向 EntityValidation class
public class EntityValidation : AbstractValdiation<Entity>{
//inject the repository
//your current validations
public bool UniqueValue(Entity instance){
//query to validate
}
}
恕我直言,使用 FluentValidator
来检查业务规则完全没问题。但最好将业务规则与简单验证分开。例如,如果它是 ASP.NET 应用程序,一般验证应在表示层执行(如使用 ModelState
),但业务规则应在域层中发挥作用(例如,在某些服务或 decorator ).
您会发现这些链接很有用: