在我的 APS.NET MVC 项目中,我正在使用 DataAnnotations 进行验证。
我从L2S迁移到 NHibernate orm,事实上发现 NHibernate 有自己的验证器( NHibernate.Validator )
转移到NHibernate.Validator也有意义吗?
例如 DataAnnotations 具有[必需]属性和 NHibernate.Validator [NotEmpty,NotNull,NotNullNotEmpty],它让我想到要使用的内容。
答案 0 :(得分:3)
我已经在生产项目中使用了两者,如果你有时间进行切换,我会高度推荐NHibernate.Validator,原因有两个:
没有。 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已融入框架并且更容易运行,毫无疑问。
希望有所帮助。