就问题而言,我有一个结构如下的项目,其中每一层都映射到我的 Visual Studio 解决方案中的一个项目:
- 表示层
- 业务逻辑层
- 数据层(使用 Entity Framework )
我在数据层中定义了存储库类。在 BL 层中实例化它们时,我收到一条错误,指出缺少对 Entity Framework 程序集的引用。我添加了对 DL 中使用的同一 Entity Framework dll 的引用,并且它可以工作。
我的问题是:为什么 BL 引用 DL 还不够,为什么我还需要在 BL 中添加对 EF 的“附加”引用?我显然不想在我的解决方案中控制多个 EF 版本。
我认为我的深度学习是一个“原子”单元,它的所有对象都是独立的,不需要任何其他东西就能正常运行。那么为什么在实例化 DL 中定义的类时我仍然需要添加 EF 引用,那么 DL 自己的 EF 引用又如何呢?
最佳答案
这确实是构建引擎 MSBuild 的工作原理。 Visual Studio 过去不会提示间接引用,只是在 TFS 构建服务器上发现它损坏了。至于他们为什么要这样做,我没有答案。
我有一个简单的解决方法: 使用solution-level NuGet packages 。您将 Entity Framework 包作为 NuGet 包添加到解决方案中,然后检查应具有此引用的所有项目。这种方式还可以防止出现多个不同的版本。
详细解释可以read this article .
关于entity-framework - 跨项目的程序集引用 - 需要多个 Entity Framework 引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31023889/