从 EF Core 2.1 升级到 3.1 后无法在项目之间进行数据库迁移

Unable to do database migration between projects after upgrading from EF Core 2.1 to 3.1

我一直在用

dotnet ef --startup-project "../WebApp/WebAppProject/" migrations add migrationName

要生成迁移,但将 EF Core 版本从 2.1 升级到 3.1 后,它开始抛出如下错误:

An error occurred while accessing the Microsoft.Extensions.Hosting 
services. 

Continuing without the application service provider.

Error: Problem with determining the path to the folder storing the application files
System.MissingMethodException: Method not found: 'Microsoft.EntityFrameworkCore.Metadata.Builders.IndexBuilder Microsoft.EntityFrameworkCore.Metadata.Builders.EntityTypeBuilder`1.HasIndex(System.Linq.Expressions.Expression`1<System.Func`2<System.__Canon,System.Object>>)'.
at 

base.OnModelCreating(builder);

protected override void OnModelCreating(ModelBuilder builder)
{
    base.OnModelCreating(builder);

    builder.ApplyConfigurationsFromAssembly(typeof(Context).Assembly);
}

我的项目/文件夹结构

Container
|
|
|----- Common (project) (here I'm executing above mentioned command as I used to do it)
            |
            |
            |
            |----- Persistence
                             |
                             |
                             | Context.cs
                             | ----- Migrations
                                              |
                                              | Migration1.cs
                                              | Migration2.cs
                                              | Migration3.cs
                                              | ....cs
|
| ----- WebApp
             | ----- WebAppProject (project)
                        | WebApp.csproj
                        | Startup.cs
                        | Program.cs
            
            

DesignTimeDbContextFactory class 位于 Program.csWebApp/WebAppProject/

通常路径没问题,没有任何变化并且一直在工作,但是升级版本后我不确定如何帮助该工具 发现我的数据库

dotnet tool list --global 3.1.7 dotnet-ef

确切的命令适用于您的解决方案结构,除非您引用了一些旧的库版本或正在使用一些旧的 EF Core CLI 版本。

确保对 EF Core 库的所有引用都是 up-to-date(意思是 3.1.7)并且 EF Core 工具也安装了相同的版本。

(如果您认为已经是这种情况,请随意 post 项目文件的内容和 EF Core CLI 命令的 --verbose 输出。)