为什么Entity Framework Core迁移需要.NET Core 2.x?

12

在我的.NET 5.0项目中安装了PostgreSQL Nuget包(Npgsql.EntityFrameworkCore.PostgreSQL(5.0.2))以及它的EF Core依赖项(Microsoft.EntityFrameworkCore(5.0.2))。

我正在尝试使用以下命令创建迁移:

dotnet ef migrations add InitialCreate

然而迁移失败,因为要求我安装 .NET Core 2.0.0 - 遵循推荐的下载链接后,我被告知它已不再提供,并且我可能希望使用 5.0。那我该如何运行此迁移?

以下是输出内容:

Build started...
Build succeeded.
It was not possible to find any compatible framework version
The framework 'Microsoft.NETCore.App', version '2.0.0' was not found.
  - The following frameworks were found:
      3.1.11 at [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
      3.1.12 at [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
      3.1.13 at [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
      5.0.3 at [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
      5.0.4 at [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]

You can resolve the problem by installing the specified framework and/or SDK.

The specified framework can be found at:
  - https://aka.ms/dotnet-core-applaunch?framework=Microsoft.NETCore.App&framework_version=2.0.0&arch=x64&rid=osx.11.0-x64

Microsoft.EntityFrameworkCore.Tools 的版本是多少? - atiyar
Entity Framework Core .NET 命令行工具 5.0.4 - Krumelur
发布你的app.csproj文件,你可能有使用依赖于core 2.x的包。 - daremachine
在使用任何 EF 工具之前,我的项目完全正常,且全部是 .NET 5.0。 - Krumelur
我也遇到了同样的问题,@Krumelur,你找到解决方法了吗? - Mavvie
有任何答案吗? - Dblock247
2个回答

8
请确保在您的csproj中有<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="5.0.5" />,并尝试更新dotnet-ef工具:dotnet tool update --global dotnet-ef。我执行了这些操作后,问题消失了。

棒极了。你救了我的一天。 - dani herrera
2
没有为我解决问题... - Soloresq

6
这可能会发生在你在一个类库中运行命令的情况下。你可以在运行命令时指定 startup-project
dotnet ef migrations add InitialCreate --startup-project <PathToProject>

如果您根据不同的数据库提供程序拆分了项目以使迁移工作,那么这也是解决方案,您只需要将 --project <PathToPostgresDbProject> 添加到上面的解决方案中。并针对每个提供程序运行一次命令即可。 - avalerio

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