NHibernate.Validator与DataAnnotations

时间:2010-07-07 07:32:12

标签: asp.net-mvc nhibernate validation data-annotations

在我的 APS.NET MVC 项目中,我正在使用 DataAnnotations 进行验证。

我从L2S迁移到 NHibernate orm,事实上发现 NHibernate 有自己的验证器( NHibernate.Validator

转移到NHibernate.Validator也有意义吗?

例如 DataAnnotations 具有[必需]属性和 NHibernate.Validator [NotEmpty,NotNull,NotNullNotEmpty],它让我想到要使用的内容。

1 个答案:

答案 0 :(得分:3)

我已经在生产项目中使用了两者,如果你有时间进行切换,我会高度推荐NHibernate.Validator,原因有两个:

  1. NHibernate.Validators有一个 更丰富的验证属性集 (例如,少数你 (见上文)
  2. 如果实施 正确的,NHibernate.Validators 验证更容易进行单元测试。
  3. 没有。 1对我来说并不大,也可能不适合你,因为DataAnnotations中的属性集非常完整(如果需要,你可以回退到RegEx),但不是。 2对我来说是一件大事,因为我希望能够将数据验证作为我的域模型单元测试的一部分,而不是仅通过WatiN或Selenium的UI / Web测试来测试它们。使用Validators还允许我混合域模型规则验证(属性X或Y必须有一个值,但两者都不能为null),而不必去其他地方这样做。

    有关使用NHibernate Validators的一些基本指导,请查看本文:http://nhibernate.info/blog/2009/04/02/nhibernate-validator-and-asp-net-mvc.html,我还建议获取S#arp架构的源代码,Billy McCafferty创建DDD风格ASP.NET MVC的优秀框架应用。特别是,查看他需要创建的Validators和Validator ModelBinder的实现,以将NHibernate验证错误转移到MVC ModelErrors中。在此处下载S#arpArchitecture源:http://github.com/codai/Sharp-Architecture

    最重要的是:使用NHibernate.Validators是一个更具扩展性,可测试的选项,但是你需要做一些正确的使用它。 DataAnnotations已融入框架并且更容易运行,毫无疑问。

    希望有所帮助。