【问题标题】:Is it possible to use Entity Framework 6.3.0 in a .NET Standard 2.0 class library?是否可以在 .NET Standard 2.0 类库中使用 Entity Framework 6.3.0?
【发布时间】:2020-05-27 03:53:55
【问题描述】:

是否可以在 .NET Standard 2.0 类库中使用 Entity Framework 6.3.0?

Dependencies -> Packages 中,我引用了 Entity Framework 6.3.0

我有这样的代码:

using System.Data.Entity;

public partial class AlertContext : DbContext

但我收到以下错误:

命名空间中不存在类型或命名空间名称“Entity” 'System.Data'(您是否缺少程序集引用?)

找不到类型或命名空间名称“DbContext”(您是 缺少 using 指令或程序集引用?)

【问题讨论】:

    标签: entity-framework entity-framework-6 .net-standard


    【解决方案1】:

    6.3.0 是第一个面向 .NET Standard 的 Entity Framework 6 版本;它针对 .NET Standard 2.1 以及 .NET 4.0 和 .NET 4.5,如 its Nuget listing 所示。 6.2.0 仅针对 .NET。

    请注意,.NET Standard 2.0 仍然不是有效的目标。

    根据您的情况,您可能能够将您的库多定位到 .NET(在下面的示例中为 .NET 4.7.2)和 .NET Standard 2.1:

    <Project Sdk="Microsoft.NET.Sdk">
      <PropertyGroup>   
        <TargetFrameworks>net472;netstandard2.1</TargetFrameworks>
      </PropertyGroup>
    </Project>
    

    这是否可行取决于两个因素:

    • 您的其他参考资料。我上面提供的组合在大多数情况下都可以,因为 .NET 4.7.2 和 .NET Standard 2.1 可以引用 .NET Standard 2.0 包,它涵盖了大多数但绝不是所有现代包。

    • 您希望从中使用库的框架。当然,.NET 目标意味着该库可以由相同 .NET 版本或更高版本的 .NET Framework 项目使用。 .NET Standard 2.1 目标允许该库由面向 .NET Standard 2.1、.NET Core 3.0、Mono 6.4 和更高版本以及最新版本的 Xamarin 的项目使用。值得注意的遗漏是 3.0 之前的 .NET Core 版本。 EF6可用于 .NET Core 1 或 2。有关完整列表,请参阅 .NET Standard .NET implementation support 表。

    * 我使用 .NET 4.7.2 进行说明,因为虽然 .NET 4.6.1 正式支持 .NET Standard 2.0,但 Microsoft 建议使用 4.7.2 或更高版本。请参阅my answer here 了解更多信息。

    【讨论】:

    • .NET Standard 2.0 是否会成为目标?对于我们这些项目和网站使用 .NET Framework 4.8(最新版本)的人来说,其中许多使用 Entity Framework 6(当前为 6.4.4),这使得迁移到 .NET Core(即将成为 .NET 5)变得困难,如果不是几乎不可能的话。
    【解决方案2】:

    我找到了两种选择:

    1. 将 EF 降级到较低版本 (6.2) 或
    2. Nuget 安装 Microsoft.EntityFrameworkCore 并使用以下内容: using Microsoft.EntityFrameworkCore; public partial class AlertContext : DbContext

    【讨论】:

      猜你喜欢
      • 2020-02-11
      • 2018-10-13
      • 1970-01-01
      • 1970-01-01
      • 2018-06-21
      • 2023-03-10
      • 2021-06-24
      • 1970-01-01
      • 2018-04-27
      相关资源
      最近更新 更多