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

7

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

运行以下命令时,会收到下面的错误。

dotnet ef migrations add InitialCreate

执行的应用程序不存在:.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

嗨@TheGeneral,阅读了那个,不确定提出的解决方案是什么,我相信他们遇到了稍微不同的问题。 - user12425844
请访问以下链接以了解有关EF Core 3.0的重大更改:https://learn.microsoft.com/zh-cn/ef/core/what-is-new/ef-core-3.0/breaking-changes#dotnet-ef - Jeremy Lakeman
完全删除之前的 .NET Core 版本,然后再尝试。并在项目属性中更改 .NET Core 的目标平台版本。 - CodeMind
2个回答

3

解决方案

为了修复此问题,您应该执行以下两个步骤。

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

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

    Github问题 #14016 / Microsoft Breaking Changes

  2. 安装先前版本的.NET Core SDK。 .NET Core v2.2

重现此错误

我创建了一个干净的虚拟机,并只安装了.NET Core v3。然后,我按照您提到的方式运行命令dotnet ef migrations add InitialCreate。我得到了以下错误:enter image description here

因此,我安装了先前的.NET Core SDK版本(v2.2),问题得到了解决。

建议

Microsoft不建议使用.NET Core版本2.x.x。这些版本已经到达生命周期结束,也就是说它们不再受支持。他们建议转移到受支持的版本,如.NET Core 3.1。


@Artportraitdesign1,根据您的更新,我已经模拟了您的错误并找到了正确的解决方案。此外,我稍微修改了我的答案以帮助您。干杯! - Willian

-1

要在Visual Studio的程序包管理器控制台中运行下面的命令怎么样?

add-migration InitialCreate

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接