【发布时间】:2012-10-05 21:29:24
【问题描述】:
我在尝试将 NHibernate 与我的服务层分离时遇到了困难。我的架构如下所示:
web -> 服务 -> 存储库 -> nhibernate -> db
我希望能够从我的服务层和可能的 Web 层生成休眠查询,而这些层不知道它们正在处理什么 orm。目前,我在我的所有存储库中都有一个 find 方法,它接受 IList<object[]> criteria。这使我可以从架构中的任何位置传递一个标准列表,例如new object() {"Username", usernameVariable};。 NHibernate 接受它并创建一个新的 Criteria 对象并添加传入的标准。这适用于从我的服务层进行的基本搜索,但我希望能够传入我的存储库转换为 NHibernate 标准的查询对象。
真的,我很想实现类似这个问题中描述的东西:Is there value in abstracting nhibernate criterion。我只是没有找到任何关于如何实现这样的东西的好资源。该问题中描述的方法是一种好方法吗?如果是这样,任何人都可以提供一些关于如何实施这种解决方案的指示吗?
【问题讨论】:
-
你为什么要抽象和隐藏 NHibernate?你应该阅读ayende.com/blog/4567/… 和ayende.com/blog/3955/repository-is-the-new-singleton 然后重新考虑你的设计
标签: c# nhibernate onion-architecture