Asp.net Core 中的 EntityFrameworkCore nuget 包混淆

EntityFrameworkCore nuget packages confusion in Asp.net Core

我正在尝试使用 dot net 核心创建 Web 应用程序/api。

数据库我选择Microsoft SqlServerEntityFrameworkCore作为ORM

在像 Asp.Net MVC 5 这样的以前的版本中,我是这样使用的:

Install-Package EntityFramework

并且我能够使用迁移、DbContexts ...

但现在使用 dot net core 我看到我必须安装多个 EntityFramework nuget 包,我在多个教程和现实世界中都看到了这一点。

开发人员安装了以下软件包而不解释原因:

Microsoft.EntityFrameworkCore
Microsoft.EntityFrameworkCore.Design
Microsoft.EntityFrameworkCore.Relational
Microsoft.EntityFrameworkCore.SqlServer
Microsoft.EntityFrameworkCore.Tools

我用谷歌搜索了一下,结果发现我只需要这些:

Microsoft.EntityFrameworkCore
Microsoft.EntityFrameworkCore.Sqlserver
Microsoft.EntityFrameworkCore.Tools

因为工具包从这个 post 中调出了设计包:

问题是我们需要 dot net core 中的哪些包才能在我们的项目中使用 entityframeworkcore?

你只需要:

Microsoft.EntityFrameworkCore.Sqlserver

(取决于.Relational)

如果您需要 运行 VS Package Manger 控制台安装中的 EF Core 命令:

Microsoft.EntityFrameworkCore.Tools

如果您需要 dotnet CLI EF Core 工具 运行:

dotnet tool install --global dotnet-ef

如果您使用的是 .net 5,则需要指定软件包的版本。

但首先你需要打开包管理器控制台。那是来自 View->Other Windows->Package Manager Console。您需要确保默认项目是您要使用的项目。 Like this

然后 运行 在包管理器控制台中执行这些命令:

1.

Install-Package Microsoft.EntityFrameworkCore.Tools -Version 5.0
Install-Package Microsoft.EntityFrameworkCore.SqlServer -Version 5.0
Install-Package Microsoft.EntityFrameworkCore.SqlServer.Design

(对于 SqlServer.Design 你不需要指定版本)

(如果您使用的是 .net 6,只需从命令中删除“-Version 5.0”)