我有一个包含3个项目的Visual Studio解决方案:
Persistence
,项目C
,取决于NHibernate
并包含所有存储库接口,这些存储库的Hibernate
实现以及映射到数据库表的类
BusinessModel
,项目B
,取决于C
,并包含代表业务域实体的所有服务类和类。这些服务使用存储库来检索数据,然后将这些数据转换为业务表示形式的表面。
MyWebSite
,项目A
,取决于A
并包含所有MVC类/文件。这里的MVC控制器使用B
中的服务类来执行任何业务逻辑功能。这个级别没有任何知识,项目B
使用项目C
的存储库来执行其操作。
在一个完美的世界中,我认为项目A
应该引用B
引用C
引用NHibernate
。这似乎不是真的。我发现项目A
需要引用B
和C
以及NHibernate
!我不喜欢我需要的Web应用程序的想法了解我的后端架构,我特别不希望它意识到我使用NHibernate
作为我的ORM这一事实。
有没有办法告诉这些项目在解析引用时使用传递依赖?
我的项目是Visual Studio 2010中的.NET 4,如果该信息有所不同。
编辑:
我找到this SO answer一个相关的问题,只有当项目C
的类从项目B
浮出来时才需要解释这些引用。我一直非常坚定不要在图层之间发生任何泄漏,我知道Hibernate
类只在C
中使用,所以也许我只是不理解......