【问题标题】:Business rules validation in NHibernate ValidatorNHibernate Validator 中的业务规则验证
【发布时间】:2009-04-28 15:09:12
【问题描述】:
是否可以定义 NHibernate.Validator 将使用的验证方法(用于业务规则验证)?
我的意思是存在于 EntLib 中的东西:
[HasSelfValidation()]
public class SomeClass
{
//...
[SelfValidation()]
public virtual void DoValidate(ValidationResults results)
{
//...
}
}
【问题讨论】:
标签:
nhibernate
validation
business-logic
【解决方案1】:
是的,可以这样做 - 但您将错过一种在验证错误的情况下传达更多信息的方式,以了解违反了哪些规则。
据我所知,NHibernate Validator 仅提供指定文本消息、类名称以及(在属性级别验证属性的情况下)被违反属性的名称的能力。
如果您的属性HasSelfValidationAttribute 实现了指向IValidator(或IInitializableValidator)的IRuleArgs,则除了简单的string Message 和类的名称之外,它无法返回任何其他内容,这将如果您的需求是验证“真正的业务规则”,则信息可能太少。
NHibernate Validator 非常适合针对类属性进行简单验证,但是当您需要进行更复杂的验证时,它就显得很短了。