asp.net-mvc - NHibernate.Validator 与 DataAnnotations

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

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

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

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

例如,DataAnnotations具有[Required]属性和NHibernate.Validator[NotEmpty、NotNull、NotNullNotEmpty],这让我思考该使用什么。

最佳答案

我已经在生产项目中使用过这两种方法,如果您有时间进行切换,我会强烈推荐 NHibernate.Validator,原因如下:

  1. NHibernate.Validators 有一个 更丰富的验证属性集 (例如,少数你 上面提到)
  2. 如果实现 正确地,NHibernate.Validators 验证更容易进行单元测试。

没有。 1 对我来说并不大,可能也不适合你,因为 DataAnnotations 中的属性集非常完整(如果需要,你可以回退到 RegEx),但不是。 2 对我来说很重要,因为我希望能够将数据验证作为我的域模型单元测试的一部分,而不是仅通过 WatiN 或 Selenium 通过 UI/Web 测试来测试这些内容。使用验证器还允许我混合域模型规则验证(属性 X 或 Y 必须有一个值,但两者不能为空),而不必去另一个地方这样做。

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

底线是这样的:使用 NHibernate.Validators 是更具可扩展性、可测试性的选项,但需要做一些工作才能正确使用它。 DataAnnotations 已融入框架中,并且更易于运行,这是毫无疑问的。

希望有帮助。

关于asp.net-mvc - NHibernate.Validator 与 DataAnnotations,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3192721/

相关文章:

HTML5 : Reference for valid tags inside other tags

spring - 从BindingResult中的ObjectError中获取FieldErrors

asp.net - 从 AuthorizationHandlerContext 对象获取 Controller 和操作名称

asp.net-mvc - 允许使用ASP-MVC和Forms Authentication访问特定页面

c# - NHibernate 3.1 与 Linq 的迁移问题

nhibernate - 流畅的NHibernate问题

c# - 使用 Entity Framework 将更改保存到 SQL Server 数据库时,一个或多个实体的验证失败

html - Visual Studio 2015-如何禁用 "based on your project, we have identified extensions you may find helpful"消息?

c# - 如何将 'where not in' 转换为子查询表不是实体的 NHibernate 查询?

javascript - 视障人士无法访问 Asp 验证摘要