如何使用 Visual Studio 2017 在 .Net Framework v4.6.1 应用程序中安装 Entity Framework

How to install Entity Framework in a .Net Framework v4.6.1 application using Visual Studio 2017

我在 C# 中的第一步很糟糕。

现在我正在尝试安装 Entity Framework。为此,我只是转到 NuGet 包管理器,键入“Entity”并尝试安装第一个条目“Microsoft.EntityFrameworkCore”,版本 v5.0.10.

失败并显示以下错误消息:

Could not install package 'Microsoft.EntityFrameworkCore 5.0.10'. You are trying to install this package into a project that targets '.NETFramework,Version=v4.6.1', but the package does not contain any assembly references or content files that are compatible with that framework. For more information, contact the package author.

这怎么可能? .NetFramework,v4.6.1版本是我公司的默认版本,我只是点击搜索结果中的第一个NuGet包,据我所知Visual Studio 2017是一个基本的IDE。

最重要的是,没有方向:错误消息只是说“不兼容”,但没有提到 .NetFramework 版本太旧或太新,.Net Framework 太旧或太旧最近,...

错误信息提到“联系包作者”,但是当我访问Entity Framework(https://docs.microsoft.com/en-us/ef/core/)的“项目URL”时,那个网站甚至没有提及.NetFramework.

有人知道解决这个问题的最简单方法吗? (我相信会建议安装另一个版本的 Entity framework)

提前致谢

尽管 @MarcGravell 发表评论,但 EF Core 在 .NET Framework 项目中运行良好。但不幸的是,v5 仅适用于支持 .NET Standard 2.1 的框架,不包括任何版本的 .NET Framework。

.NET Standard | Microsoft Docs

对于 .NET Framework 项目,您可以使用的最新版本的 EF Core 是 v3.1.19。这支持 .NET Standard 2.0,技术上 包括 .NET Framework 4.6.1 及更高版本。

Install-Package Microsoft.EntityFrameworkCore -Version 3.1.19

注意: 如 MS 文档中所述,使用 .NET Framework 4.6.1 应用程序中的 .NET Standard 2.0 库存在一些问题。特别是,您最终可能会获得大量支持包。如果您可以将您的应用程序升级到至少 .NET Framework 4.7.2 就更好了,它没有这些问题。

我已经确认在 VS2017 Nuget Package Manager 中第一个条目是“Microsoft.EntityFrameworkCore”并且在使用时搜索“Entity”时错误地将“Latest Stable 5.0.10”指示为适用版本.Net 4.6 项目的参考资料。 (NuGet 应该根据合适的目标依赖项进行建议)

正如 Richard 所指出的,您可以在 .Net Framework 项目中使用 EF Core,但限制是 EF Core 3.1,因为 .Net Framework 仅支持 .Net Standard 2.0。如果您在 VS 中使用包管理器 UI 您将希望使用“版本:”的下拉列表到 select“3.1.19”,因为这是最后一个可以使用的版本.Net 框架 4.x.

我建议将 EF6 用于 .Net Framework 项目而不是 EF Core 3.1,因为 3.1 仍然缺少 EF6 中的功能。搜索“EntityFramework”将找到“EntityFramework”,即 EF6。 (奇怪的是它似乎并没有在搜索词“实体”下轻易出现)

请注意,如果您的目标是 .Net Framework 4.6.1,则此版本的支持将于 2022 年 4 月结束。您应该强烈考虑将目标更新到 4.8,或者至少更新到 4.6.2。