在 webapi 中调用的具有 crud 方法的实体框架层需要引用数据层中的实体



我在 ASP.NET 的Web应用程序使用Angular作为其前端。对于数据库和API,我在解决方案中做了3个项目。API、BOL 和实体框架。

  • BOL拥有所有 POCO 类。
  • 实体框架具有DbContext类和指向 SQL Server 数据库的连接字符串。它还引用了 BOL。所有带有每个实体的插入、更新、删除和获取方法的存储库也都在那里。
  • API 具有
  • 具有 crud 功能的API控制器,这些控制器从实体框架项目中调用方法。它具有对实体框架项目的引用。

但是当我尝试在相应存储库的实例上从实体框架调用方法时,它要求添加对 BOL 的引用。但它不应该使用 BOL,因为这会破坏实体框架项目的目的

这取决于你如何使用POCO类。

如果 EF 项目使用 POCO 类返回结果,并且 API 调用 EF 项目内的方法,则需要引用 BOL,否则 API 项目不知道如何处理结果。

EF 和 API 项目都引用了 BOL 这一事实不是问题,它完全是应该的,因为两者都使用这些模型,这就是您首先分离模型的原因。您希望共享它们。

因此,最重要的是,如果 EF 项目使用 BOL 类接受输入或返回数据,则需要在 API 项目中添加对该项目的引用。

现在,对于连接字符串必须位于 API 项目中的第二个问题,必须保持这种状态。原因是因为框架的工作方式。

您有一个主项目,并且引用了一个类库。编译解决方案时,将生成 EF dll 并将其复制到 API 项目。此时,它将使用 API 项目的设置,而不是自己的设置。这就是连接字符串也需要位于 API 项目中的原因。查看 API bin 文件夹内部,您就会明白我的意思。

最新更新