2

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

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

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

2 回答 2

3

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

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

如果您的属性HasSelfValidationAttribute实现IRuleArgs指向一个IValidator(or IInitializableValidator),那么除了简单的类名和类名之外,它没有其他方法可以传达任何string Message信息,如果您的需求是验证“真正的业务规则”,这可能是太少的信息。

NHibernate Validator 非常适合针对类属性的简单验证,但是当您需要进行更复杂的验证时,它就显得很短了。

于 2009-04-28T17:43:37.460 回答
0

看看规则引擎项目。您的业​​务对象不必用任何属性装饰或必须实现任何接口......

于 2011-09-08T22:26:23.713 回答