为了这个问题,我有一个结构如下的项目,其中每一层都映射到我的 Visual Studio 解决方案中的一个项目:
- 表示层
- 业务逻辑层
- 数据层(使用实体框架)
我在数据层中定义了存储库类。在 BL 层中实例化它们时,我收到一条错误消息,指出缺少对实体框架程序集的引用。我添加了对在我的 DL 中使用的相同实体框架 dll 的引用,它可以工作。
我的问题是:为什么 BL 引用 DL 是不够的,为什么我还需要在 BL 中添加对 EF 的“附加”引用?我显然不想在我的解决方案中控制多个 EF 版本。
我认为我的 DL 是一个“原子”单元,它的所有对象都是自包含的,不需要其他任何东西来正常运行。为什么在 DL 中定义的实例化类时我仍然需要添加 EF 引用,DL 自己的 EF 引用呢?