实体框架:在 Net Core 中运行先前版本的 EF 迁移

6 .net c# entity-framework .net-core .net-core-2.2

我安装了 Net Core 3.1.1000。现在我们正在尝试使用 EF Core 2.2.6 数据库以前的解决方案运行 ef 迁移,

运行以下时,收到以下错误。

dotnet ef migrations add InitialCreate
Run Code Online (Sandbox Code Playgroud)

要执行的应用程序不存在:.dotnet\tools.store\dotnet-ef\2.2.6-servicing-10079\dotnet-ef\2.2.6-servicing-10079\tools\netcoreapp2.2\any\dotnet-ef .dll'。

我们如何解决这个问题?

如何直接指向DLL目标目录并执行?我听说重命名文件目录不是个好主意。

我看到真正的 dll 位于这里:

....dotnet\tools.store\dotnet-ef\2.2.6\dotnet-ef\2.2.6\tools\netcoreapp2.2\any\dotnet-ef.dll

已经运行了这个并安装了这个: dotnet tool install --global dotnet-ef

Wil*_*ian 3

解决方案

要修复它,您应该执行以下两个步骤。

  1. 将 EF 工具安装为本地或全局工具。打开终端并运行:dotnet tool install --global dotnet-ef

    从 .NET Core v3 开始,EF 工具不再是 .NET Core SDK 的一部分。

    Github 问题#14016 / Microsoft重大更改

  2. 安装以前的.NET Core SDK。.NET Core v2.2

重现此错误

我创建了一个干净的虚拟机,并且刚刚安装了 .NET Core v3。然后,我按照您提到的方式运行了命令dotnet ef migrations add InitialCreate。我收到以下错误:在此输入图像描述

于是我安装了之前的.NET Core SDK版本(v2.2),问题就解决了。

推荐

Microsoft 不建议使用 .NET Core 版本 2.xx。这些版本已终止生命周期,这意味着不再受支持。他们建议迁移到受支持的版本,例如 .NET Core 3.1。