NHibernate Validator中的业务规则验证

时间:2009-04-28 15:09:12

标签: nhibernate validation business-logic

是否可以定义NHibernate.Validator将使用的验证方法(用于业务规则验证)? 我的意思是EntLib中存在的东西:

[HasSelfValidation()]
public class SomeClass
{
    //...

    [SelfValidation()]
    public virtual void DoValidate(ValidationResults results)
    {
        //...
    }
}

2 个答案:

答案 0 :(得分:3)

是的,可以这样做 - 但是在验证错误的情况下,您将错过一种方式来传达有关违反哪些规则的更多信息。

据我所知,NHibernate Validator只提供指定文本消息的能力,类的名称,以及 - 在属性级别验证属性的情况下 - 违反属性的名称。

如果您的属性HasSelfValidationAttribute实施IRuleArgs指向IValidator(或IInitializableValidator),则除了简单string Message之外,它无法回复任何其他内容和类的名称,如果您的要求是验证“真实的业务规则”,则可能信息太少。

NHibernate Validator非常适合用于类的属性的简单验证,但是当您需要进行更复杂的验证时,它很简单。

答案 1 :(得分:0)

看看The RulesEngine Project。您的业​​务对象不必使用任何属性进行修饰,也不必实现任何接口......