执行update-database命令更新数据库后如何回滚EF Core数据库迁移?
EF Core 已应用数据库迁移的回滚方案
完全可以回滚已经通过update-database执行的迁移操作,具体操作方法如下:
操作命令
根据你使用的命令行工具二选一即可:
- 包管理控制台(PMC,Visual Studio 内置)
执行命令:Update-Database <目标迁移名称>
示例:如果你最近依次应用了InitBaseTables、AddUserAgeField、AddOrderTable三个迁移,要回滚后两个迁移回到InitBaseTables的状态,执行:Update-Database InitBaseTables - .NET CLI(跨平台命令行)
对应命令为:dotnet ef database update <目标迁移名称>
上面的示例对应的CLI命令为:dotnet ef database update InitBaseTables
如果需要回滚所有迁移,恢复到完全未创建迁移的空数据库状态,直接将目标迁移名称替换为0即可:
- PMC 命令:
Update-Database 0 - CLI 命令:
dotnet ef database update 0
注意事项
- 回滚的核心逻辑是执行目标迁移之后所有迁移的
Down方法,如果你编写迁移时修改、删除了对应迁移的Down方法逻辑,可能导致回滚失败,生产环境执行回滚前务必先备份数据库。 - 回滚操作仅默认处理数据库结构变更,如果你的
Down方法没有做业务数据的兼容处理,回滚过程中会丢失对应字段/表的存量业务数据。 - 如果已经手动删除了要回滚的迁移对应的代码文件,无法直接执行回滚,需要先恢复对应的迁移文件后再操作。
内容的提问来源于stack exchange,提问作者JOBIN WILFRED
相关产品推荐
相关产品推荐

