我有一个包含 3 个项目的 Visual Studio 解决方案:
- 我的网站 (A)
- 商业模式 (B)
- 持久性 (C)
Persistence
, project C
, 依赖NHibernate
并包含所有存储库接口、Hibernate
这些存储库的实现以及映射到数据库表的类。
BusinessModel
, project B
, 依赖C
并包含所有服务类和代表业务领域实体的类。这些服务使用存储库来检索数据,然后将这些数据转换为业务表示形式,呈现在它们自己的接口中。
MyWebSite
, project A
, 依赖A
并包含所有 MVC 类/文件。这里的 MVC 控制器使用服务类 fromB
来执行任何业务逻辑功能。此级别不知道 projectB
使用 projectC
的存储库来执行其操作。
在一个完美的世界中,我认为该项目A
应该引用B
which references C
which references NHibernate
。这似乎不是真的。我发现该项目A
需要参考B
and C
and NHibernate
!我不喜欢我的 Web 应用程序需要了解我的后端架构的想法,我特别不希望它知道我正在NHibernate
用作我的 ORM 的事实。
有没有办法告诉这些项目在解析它们的引用时利用传递依赖?
我的项目是 Visual Studio 2010 中的 .NET 4,如果该信息有什么不同的话。
编辑:我找到了一个相关问题的这个 SO 答案C
,它解释了只有在 project的类从 project 浮出水面时才需要这些参考资料B
。我一直非常坚定地在层之间没有任何泄漏,而且我知道Hibernate
类仅用于,C
所以也许我只是没有正确理解......