【发布时间】:2011-05-24 10:03:13
【问题描述】:
我需要一些建议,我们如何在表示层中解耦 nHibernate 依赖项。目前我们有一个三层 C# winforms 应用程序,包括(简化)以下层;
- 用户界面 (UI)
- 业务逻辑 (BAL)
- 数据访问逻辑 (DAL)
我们正在将此应用程序迁移到 ORM (nHibernate),理想情况下希望只有 DAL 引用 nHibernate。我们还希望使用 nHibernate 中包含的“工作单元”功能,采用“会话每个会话”方法。
要实现这一点,我们需要在 UI 中创建并打开一个会话,将会话通过 BAL 传递给 DAL,但是如果不在 BAL 和 DAL 中创建对 nHibernate 的依赖项,我们就无法实现这一点。
任何建议将不胜感激。我们应该如何构建架构以避免在 UI 和 BAL 中对 nHibernate 的任何引用。有什么想法吗?
我还必须补充一点,我们也不希望 UI 引用 DAL。
UI => BAL => DAL
【问题讨论】:
-
您所要求的并没有真正的意义(尽管我确实理解您正在努力完成的工作,因为我去过那里)。这可能是可行的,但可能很难理解实现细节,而且它提供的回报很少。我的建议:让您的 UI 层了解 NHibernate,但尽量减少该层中 NHibernate 的使用。
标签: c# nhibernate architecture unit-of-work