NHibernate架构?

Alb*_*ert 7 nhibernate persistence hibernate

我打算使用nhibernate作为ORM来实现我的下一个项目(asp.net MVC).由于我没有使用nhibernate的经验,我想知道如何组织不同项目之间的依赖关系.我已经看到这样的东西作为推荐的方法:

  • UI取决于Model,Repositories和NHibernate
  • 存储库依赖于Model和Nhibernate

    ----- UI-----------------------------
   |                |                    |
   |                |                    |
    Model  NHibernate

问题是我不希望UI代码直接与nhibernate交互,所以我想到这样的事情:

  • UI取决于Model和Facade
  • Facade依赖于Model和Nhibernate
----- UI -------- | | | | 模型

Facade,实际上将拥有存储库以及封装nhibernate对象.

这听起来合理吗?首选架构是否有任何指导方针?

感谢名单

Ben*_*man 6

这通常是我在我的应用程序中执行的操作:

  • Foo.Core

    • 包含域对象,业务逻辑等
    • 不参考任何基础结构相关的程序集,例如Web服务,ESB或数据访问
    • 有些人也把存储库接口放在这里,但这是一个设计选择.它允许您在此处拥有与存储库交互的域服务,仍然与NHibernate脱钩
  • Foo.Persistence

    • 对NHibernate的引用
    • 存储库实现
    • 工作单元HttpModule for ASP.NET(帮助控制NHibernate在Web应用程序中的会话生命周期)
  • Foo.Web

    • 引用Foo.Core和Foo.Persistence
    • HttpModule引用控制NHibernate Session

Foo.Web永远不会直接与NHibernate交互......它始终通过存储库.使用IoC容器,您只需请求IRepository,而不关心实现是什么.