EF Core 支持的 .NET 实现.NET implementations supported by EF Core

我们希望 EF Core 可供开发人员在所有新式 .NET 实现上使用,并且我们仍在努力实现这一目标。 尽管自动测试证明 EF Core 支持 .NET Core,同时许多应用程序已成功使用 EF Core,但 Mono、Xamarin 和 UWP 仍存在一些问题。

概述Overview

下表提供了每个 .NET 实现的指南:

EF Core2.1 和 3.1
.NET Standard2.0
.NET Core2.0
.NET Framework(1)4.7.2
Mono5.4
Xamarin.iOS(2)10.14
Xamarin.Android(2)8.0
UWP(3)10.0.16299
Unity(4)2018 年 1 月

(1) 请参阅下面的 .NET Framework 部分。

(2) Xamarin 存在一些问题和已知限制,这些问题和限制可能会阻止部分使用 EF Core 开发的应用程序正常运行。 查看未解决问题列表,了解解决方法。

(3) 建议使用 EF Core 2.0.1 和更高版本。 安装 .NET Core UWP 6.x 包。 请参阅本文的通用 Windows 平台部分。

(4) Unity 存在问题和已知限制。 查看未解决问题列表。

.NET Framework.NET Framework

面向 .NET Framework 的应用程序可能需要更改为使用 .NET Standard 库:

编辑项目文件,并确保以下条目出现在初始属性组中:

  1. <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>

对于测试项目,还要确保存在以下条目:

  1. <GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType>

如果想要使用较旧版本的 Visual Studio,请确保将 NuGet 客户端升级到版本 3.6.0,以便使用 .NET Standard 2.0 库。

如果可能,我们还建议从 NuGet packages.config 迁移到 PackageReference。 请将以下属性添加到项目文件:

  1. <RestoreProjectStyle>PackageReference</RestoreProjectStyle>

通用 Windows 平台Universal Windows Platform

早期的 EF Core 和 .NET UWP 版本存在许多兼容性问题,尤其是用于使用 .NET Native 工具链编译的应用程序时。 新的 .NET UWP 版本增加了对 .NET Standard 2.0 的支持,且包含了 .NET Native 2.0,修复了之前报告的大多数兼容性问题。 我们使用 UWP 对 EF Core 2.0.1 进行了更彻底的测试,但测试不是自动执行的。

在 UWP 上使用 EF Core 时:

报告问题Report issues

对于未按预期工作的任意组合,我们建议在 EF Core 问题跟踪程序中创建新问题。 对于特定于 Xamarin 的问题,请使用 Xamarin.AndroidXamarin.iOS 问题跟踪程序。