从 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.cs
内 WebApp/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
输出。)
我一直在用
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.cs
内 WebApp/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
输出。)