验证块与Nhibernate.Validator

验证块与Nhibernate.Validator,nhibernate,validation,model,Nhibernate,Validation,Model,我正在寻找验证框架,虽然我已经在使用NHibernate,但我正在考虑使用contrib项目中的NHibernate.validator。不过,我也在考虑MS验证块,它看起来很健壮,但我还没有深入了解每一个验证块的细节,所以我想知道是否有人参与了这两个框架,体验如何比如?那么D)以上都不是。 我记得去年对此进行了评估,并决定使用Spring.NET的验证框架 如果您使用NHibernate,您可能也希望使用Spring.NET的设施来使用NHibernate。在大多数情况下,我认为Spring.

我正在寻找验证框架,虽然我已经在使用NHibernate,但我正在考虑使用contrib项目中的NHibernate.validator。不过,我也在考虑MS验证块,它看起来很健壮,但我还没有深入了解每一个验证块的细节,所以我想知道是否有人参与了这两个框架,体验如何比如?

那么D)以上都不是。 我记得去年对此进行了评估,并决定使用Spring.NET的验证框架


如果您使用NHibernate,您可能也希望使用Spring.NET的设施来使用NHibernate。

在大多数情况下,我认为Spring.NET是相当独立的。这意味着它不应该强迫你重新设计。你可以想用多少就用多少。编写一个可以注入到需要使用spring进行验证的类中的对象应该非常容易。然后将这个对象连接到castle中,以获得所需的“验证组”或“验证器”的名称,然后让spring将验证器注入到该对象中,然后表单/业务对象/服务将使用验证器

此处是指向文档的链接,验证在第12节:


您只是在使用Castle还是在使用Monorail?

NHibernate验证器不要求您使用NHibernate进行持久化。使用方法可以简单到:

var engine = new ValidatorEngine();
InvalidValue[] errors = engine.Validate(someModelObjectWithAttributes);

foreach(var error in errors)
{
    Console.WriteLine(error.Message);
}

当然,它可以连接到NHibernate并防止无效对象的持久性,但您也可以使用它来验证非持久性对象。

当然,您可以尝试编写自己的验证框架。例如,Karl Seguin将帮助您:

这是一个非常好的解决方案:)