如何一次回滚多个 EF Core 迁移
How to rollback more than one EF Core migration at time
我在我的 C#
项目中使用 EF Core 2.2
作为 ORM
,我有 8 个迁移,我想知道我是否可以回滚不仅是最后一个,还可以回滚更多一次回滚中的一个。
更新 1:
In other words, if I have n migrations, I want to apply the n - 2 or n
- 3, I need to apply the n - m migration and not only the last one as the Remove-Migration
我的最终目标是创建一个 Powershell
脚本,这样我就可以像下面这样使用它:
RollbackTo [TagetProject] "TargetMigration"
prowershell 将采用两个参数:目标项目和要恢复的迁移。
update-database
之后,您将无法撤消它。但作为解决方法,有两种方法:
1.Look 在您应用的迁移中,其中有 2 个方法,Up 和 Down。复制下来的方法。然后添加迁移,粘贴你复制的部分。申请 update-database
。为您想要的迁移执行此操作 undo.IMPORTANT:从上次迁移开始执行。
- 如果您不介意删除数据库,这是一种更清晰的方法。删除数据库。然后删除您不想应用的迁移(删除的迁移应该是最后一个,否则您可能会出错)。应用
update-database
。您将获得所需的数据库。在您的情况下:从头开始一个接一个地应用迁移,直到您最终要应用的迁移。
解决方案是将数据库更新回所需的目标迁移:
dotnet ef database update "THE NAME OF THE TARGET MIGRATION"
多次执行此 Ef Core 命令,直到所需的迁移:
dotnet ef migrations remove
在我的 Powershell 脚本下方:
param (
[Parameter(Mandatory=$true)][string]$migration,
[Parameter(Mandatory=$true)][int]$nbr_removes
)
dotnet ef database update $migration
for($i=0; $i -lt $nbr_removes; $i++) {
dotnet ef migrations remove
echo 'revert changes'
}
我们可以像下面这样使用它:
.\rollback_to.ps1 2019081200218_AddScoreColumn 2
我在我的 C#
项目中使用 EF Core 2.2
作为 ORM
,我有 8 个迁移,我想知道我是否可以回滚不仅是最后一个,还可以回滚更多一次回滚中的一个。
更新 1:
In other words, if I have n migrations, I want to apply the n - 2 or n - 3, I need to apply the n - m migration and not only the last one as the Remove-Migration
我的最终目标是创建一个 Powershell
脚本,这样我就可以像下面这样使用它:
RollbackTo [TagetProject] "TargetMigration"
prowershell 将采用两个参数:目标项目和要恢复的迁移。
update-database
之后,您将无法撤消它。但作为解决方法,有两种方法:
1.Look 在您应用的迁移中,其中有 2 个方法,Up 和 Down。复制下来的方法。然后添加迁移,粘贴你复制的部分。申请 update-database
。为您想要的迁移执行此操作 undo.IMPORTANT:从上次迁移开始执行。
- 如果您不介意删除数据库,这是一种更清晰的方法。删除数据库。然后删除您不想应用的迁移(删除的迁移应该是最后一个,否则您可能会出错)。应用
update-database
。您将获得所需的数据库。在您的情况下:从头开始一个接一个地应用迁移,直到您最终要应用的迁移。
解决方案是将数据库更新回所需的目标迁移:
dotnet ef database update "THE NAME OF THE TARGET MIGRATION"
多次执行此 Ef Core 命令,直到所需的迁移:
dotnet ef migrations remove
在我的 Powershell 脚本下方:
param (
[Parameter(Mandatory=$true)][string]$migration,
[Parameter(Mandatory=$true)][int]$nbr_removes
)
dotnet ef database update $migration
for($i=0; $i -lt $nbr_removes; $i++) {
dotnet ef migrations remove
echo 'revert changes'
}
我们可以像下面这样使用它:
.\rollback_to.ps1 2019081200218_AddScoreColumn 2