数据库项目和web项目之间的循环依赖

时间:2021-02-12 21:05:32

标签: asp.net

我有一个需要访问数据库值的 Web 应用程序。目前,Web 项目创建了一个 DB Project 类的实例,并使用它通过类的各种函数来提取值。然而,每当数据库表发生变化时,我们都必须更新我们的代码以适应新的表/结构。所以我正在尝试重新组织依赖项,以便 DB 项目中的 DB 类实现 Web 项目接口。

这应该没问题,并且需要 DB 项目简单地引用 Web 项目。但是,据我所知,无论是否将其分配给接口变量,我仍然需要构建带有 Web 应用程序的 DB Project 类的具体实现。因此,我认为我还需要在 Web 项目中引用 DB 项目,从而导致我面临的循环依赖。

我在 asp.net 4.0 工作。

我的 Web 项目如何在不直接引用项目的情况下访问 DB 项目类的实例?

1 个答案:

答案 0 :(得分:2)

您将只在您的网络项目中使用接口。 DB 项目类实现了这些接口。因此,您的数据库项目需要引用定义接口的任何项目。

您的启动项目将使用依赖注入将具体的 DB 类连接到接口,并在创建 Web 类时提供它们。

因此,一种方法是拥有这些项目

  • IInterfaces - Web 项目使用的接口(不是具体的类)
  • Web - 使用 IInterfaces
  • DB - 使用 IInterfaces。定义具体实现
  • 启动 - 使用 IInterfaces、Web 和 DB。实例化 Web 类和 DB 类,为接口注入具体的依赖

您可以根据您想要减少耦合的程度来组合上述一些内容。例如,您可以将 Web 和 Startup 结合起来。

相关问题