Entity Framework 带有在 webapi 中调用的 crud 方法的层需要引用数据层中的实体
Entity Framework layer with crud methods called in webapi need reference to entities in data layer
我在 ASP.NET 中的 Web 应用程序使用 Angular 作为其前端。对于数据库和API,我在解决方案中做了3个项目。 API、BOL 和 Entity Framework。
- BOL 拥有所有 POCO classes.
- Entity Framework 具有
DbContext
class 和 SQL 服务器数据库的连接字符串。它还具有对 BOL 的引用。所有包含每个实体的插入、更新、删除和获取方法的存储库也都在那里。
- API 的 API 控制器具有 crud 功能,可以调用 Entity Framework 项目中的方法。它引用了 Entity Framework 项目。
但是当我尝试从 Entity Framework 调用相应存储库实例的方法时,它要求添加对 BOL 的引用。但它不应该使用 BOL,因为那样会破坏 Entity Framework 项目
的目的
这取决于您如何使用 POCO classes。
如果 EF 项目使用 POCO classes 来获得 return 结果并且您的 API 调用了 EF 项目内部的方法,那么您将需要对 BOL 的引用,否则 API 项目不知道如何处理结果。
事实上 EF 和 API 项目都引用了 BOL 这不是问题,它应该是这样,因为它们都使用这些模型,这就是为什么你在第一个模型中分离了模型地方。您希望它们被共享。
所以最重要的是,如果 EF 项目使用 BOL classes 获取输入或 returns 数据,那么您需要在 API 项目中添加对该项目的引用.
现在,对于必须在 API 项目中连接字符串的第二个问题,必须保持这种状态。原因在于框架的工作方式。
您有一个主项目并引用了一个 class 库。当您编译解决方案时,EF dll 将被构建并复制到 API 项目。届时它将使用 API 项目的设置,而不是它自己的设置。这就是连接字符串也需要位于 API 项目中的原因。查看 APIs bin 文件夹,您就会明白我的意思。
我在 ASP.NET 中的 Web 应用程序使用 Angular 作为其前端。对于数据库和API,我在解决方案中做了3个项目。 API、BOL 和 Entity Framework。
- BOL 拥有所有 POCO classes.
- Entity Framework 具有
DbContext
class 和 SQL 服务器数据库的连接字符串。它还具有对 BOL 的引用。所有包含每个实体的插入、更新、删除和获取方法的存储库也都在那里。 - API 的 API 控制器具有 crud 功能,可以调用 Entity Framework 项目中的方法。它引用了 Entity Framework 项目。
但是当我尝试从 Entity Framework 调用相应存储库实例的方法时,它要求添加对 BOL 的引用。但它不应该使用 BOL,因为那样会破坏 Entity Framework 项目
的目的这取决于您如何使用 POCO classes。
如果 EF 项目使用 POCO classes 来获得 return 结果并且您的 API 调用了 EF 项目内部的方法,那么您将需要对 BOL 的引用,否则 API 项目不知道如何处理结果。
事实上 EF 和 API 项目都引用了 BOL 这不是问题,它应该是这样,因为它们都使用这些模型,这就是为什么你在第一个模型中分离了模型地方。您希望它们被共享。
所以最重要的是,如果 EF 项目使用 BOL classes 获取输入或 returns 数据,那么您需要在 API 项目中添加对该项目的引用.
现在,对于必须在 API 项目中连接字符串的第二个问题,必须保持这种状态。原因在于框架的工作方式。
您有一个主项目并引用了一个 class 库。当您编译解决方案时,EF dll 将被构建并复制到 API 项目。届时它将使用 API 项目的设置,而不是它自己的设置。这就是连接字符串也需要位于 API 项目中的原因。查看 APIs bin 文件夹,您就会明白我的意思。