【发布时间】:2011-11-30 09:41:28
【问题描述】:
我使用 NHibernate。我需要决定如何验证域实体。你有什么建议吗?使用 NHibernate 和 Fluent Validation 有什么问题吗?
【问题讨论】:
标签: nhibernate validation domain-driven-design
我使用 NHibernate。我需要决定如何验证域实体。你有什么建议吗?使用 NHibernate 和 Fluent Validation 有什么问题吗?
【问题讨论】:
标签: nhibernate validation domain-driven-design
在我所知道的 O/RM 工具中,NHibernate 在域类的 C# 代码中占用的空间最小。它几乎允许使用 POCO,同时完全忘记依赖关系。这也正是 FluentValidation 所允许的。所以这对我来说似乎是一段幸福的婚姻。
但我不敢在不了解您的上下文的情况下推荐或反对任何验证工具或框架。有很多候选人,他们也会与 NHibernate 一起工作。数据访问和验证是两个不同的问题,应该(并且可以)相互分离。
【讨论】:
Fluent 验证非常适合用户输入验证,可以用于简单的业务规则。但它没有与 NHibernate 集成。这意味着除了您的自定义代码之外,没有什么可以阻止 NHibernate 保存无效实体。
另一方面,有一个 NHibernate 验证器项目。它与 nhibernate 集成,它不会让你保存无效的实体。
【讨论】:
通常,您的域不应该知道您的 ORM。它应该被隔离保存。所以我的回答是: 我看不到 NH 和 FNH 验证有任何问题,但尽可能将域隔离。
【讨论】: