实体框架与 .net 框架 4.7.2 项目和 .net 标准 2.0 项目的兼容性

EntityFramwork compatibility with .net framework 4.7.2 projects and .net standard 2.0 project

我已经共享了使用 entity framework 6.4 的项目,它代表其他使用 .net Framework 4.7.2 的项目中的数据访问层。

我还创建了一个 azure 函数版本 2 项目。该框架是 .net 标准 2.0,支持 .net 核心 2,因为它是 azure 功能所必需的。

当我想在 azure 函数中使用那个共享的 entity framework 项目时,问题发生了。由于 .net 标准 2.0

不支持 EntityFramework 6.4

我正在寻找升级或降级甚至框架更改的解决方案,以便在 azure 函数和所有其他项目中使用共享的 entity framework 项目。

Entity Framework 6.4 兼容 netstandard 2.1,但不兼容 2.0,这意味着它至少需要 dotnet core 3.0。

但如果您可以将 azure 函数项目升级到目标核心 3.0,则可以在数据层项目中启用多目标。

打开csproj文件并替换:

<TargetFramework>netstandard2.0</TargetFramework>

来自

<TargetFrameworks>netstandard2.1;net472</TargetFrameworks>

注意从 TargetFrameworkTargetFrameworks 的变化,这很重要!

这将使该项目能够被针对完整框架(4.7.2 及更高版本)以及 net standard 2.1 支持的任何项目引用。

如果您使用 v1 版本的 Azure Functions,则兼容性问题较少,例如支持 EF,但您可能仍然 运行 遇到其他依赖项的问题。

我过去通过创建 V2 函数取得了巨大的成功,这些函数作为 "front end" 运行,post 向事件中心或服务总线队列发送消息。然后使用连续的 Web 作业在 .net 框架代码中处理这些排队的消息,我现在将其称为解决方案的 "legacy" 部分。

另一种选择是在 .net fx 中使用 运行 的 REST API,这将使您的函数保持轻量级,因为它们只需要在 API