.NET使用传递依赖/引用

Jes*_*ebb 9 .net reference n-tier-architecture transitive-dependency

我有一个包含3个项目的Visual Studio解决方案:

  • MyWebSite(A)
  • 商业模式(B)
  • 持久性(C)

Persistence,project C,依赖NHibernate并包含所有存储库接口,Hibernate这些存储库的实现以及映射到数据库表的类.

BusinessModel,project B,依赖于C并包含表示业务域实体的所有服务类和类.这些服务使用存储库来检索数据,然后将这些数据转换为业务表示形式在其自己的接口中.

MyWebSite,project A,依赖于A并包含所有MVC类/文件.这里的MVC控制器使用服务类B来执行任何业务逻辑功能.该级别没有任何知识表明项目B使用项目C的存储库来执行其操作.

在一个完美的世界中,我认为该项目A应该参考B哪些参考C文献NHibernate.这似乎不是真的.我发现该项目A需要参考B CNHibernate!我不喜欢我的Web应用程序需要了解我的后端架构的想法,我特别不希望它意识到我正在使用NHibernate我的ORM 这一事实.

有没有办法告诉这些项目在解析引用时使用传递依赖?

我的项目是Visual Studio 2010中的.NET 4,如果该信息有所不同.

编辑:我找到了这个相关问题的答案,这个问题解释了这些引用只有在项目的项目C浮出水面时才需要B.我一直非常坚定不要在层之间有任何泄漏,我知道Hibernate类只用于C所以也许我只是不理解正确...