【发布时间】:2012-03-09 10:59:00
【问题描述】:
我需要一些建议:我想在表示层和业务逻辑层中解耦 nHibernate 依赖关系,以便只有数据访问逻辑层引用 nHibernate DLL。
我只看到使用 SessionHelper/SessionManager 对象的解决方案,并且所有解决方案都是在顶层使用的。我相信必须存在更好的解决方案。
我应该遵循什么设计模式? 我可以在存储库模式中封装会话(管理器、助手等)并轻松更改 ORM 而无需在业务逻辑层强制更改吗?
代码示例将不胜感激。提前致谢。
【问题讨论】:
-
"轻松更改 ORM?"您只能在您可能想要使用的所有 ORMS 之间使用最小公分母。你会遇到性能问题,因为你不能使用很多特性来增强它,并且你会有泄漏的抽象。
-
这个问题出现了很多,一般的答案是:不要这样做。在极少数情况下,能够换出 ORM 是值得进行重大权衡的。如果不完全消除它,就很难“隐藏” ORM。
-
嗨@MichaelMaddox:理论上我不想切换ORM,因为客户不支付那种投资。我的目标是能够实现基类/泛型类(适用于我的所有项目),并允许我隐藏我不想被看到的内容(即对 ORM 的依赖项)。我想封装nhibernate session、EF objectcontext等,你会如何实现这样一个类?
标签: nhibernate orm repository