【问题标题】:EntityFramwork compatibility with .net framework 4.7.2 projects and .net standard 2.0 project实体框架与 .net framework 4.7.2 项目和 .net 标准 2.0 项目的兼容性
【发布时间】:2020-05-19 21:36:12
【问题描述】:

我共享了使用实体框架 6.4 的项目,它表示其他项目中使用 .net 框架 4.7.2 的数据访问层。

我还创建了一个 azure function version 2 项目。该框架是 .net 标准 2.0,它支持 .net core 2,因为它是 azure 功能所必需的。

当我想在 azure 函数中使用该共享实体框架项目时,就会出现问题。由于 .net 标准 2.0 不支持 EntityFramework 6.4

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

【问题讨论】:

  • 实体框架 6.4 在 netstandard 2.1 上受支持,但不是 2.0。您可以在数据层项目中启用多目标吗?
  • 那我应该将azure function project framework升级到.net standard 2.1,我认为这意味着我失去了与.net framework 4.7.2的其他项目的所有兼容性。我认为...

标签: c# entity-framework azure-functions .net-standard-2.0 .net-4.7.2


【解决方案1】:

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

但如果您可以将您的 azure function 项目升级到目标 core 3.0,您可以在数据层项目中启用多目标。

打开csproj文件并替换:

<TargetFramework>netstandard2.0</TargetFramework>

通过

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

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

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

【讨论】:

  • 是的,它可以让我在 azure function 项目中引用数据层项目,但我在 .net framework 4.7.2 上还有一些其他共享项目。这是否意味着我需要将它们全部迁移到 .net 核心?
  • 不,这就是多目标方面的用武之地。这个项目现在可以被 .net 核心和完整框架项目引用。
【解决方案2】:

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

过去,我通过创建 V2 函数获得了巨大的成功,这些函数充当“前端”,将消息发布到事件中心或服务总线队列。然后使用连续的 Web 作业在 .net 框架代码中处理这些排队的消息,我现在将其称为解决方案的“遗留”部分。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多