EF Core回滚迁移需先用update命令回退数据库至目标版本,再考虑移除迁移文件;严禁直接删除已应用迁移;生产环境推荐用新迁移反向修正而非回滚。
EF Core 回滚迁移,核心是
把数据库结构恢复到某个历史迁移版本的状态,而不是直接删除已应用的迁移文件。关键在于:迁移文件一旦应用到数据库,就不能用 remove 命令删掉——必须先“回退数据库”,再考虑是否移除迁移代码。
这是最常用、最安全的回滚方式。执行后,EF Core 会按顺序调用后续所有迁移的 Down() 方法,直到目标迁移为止。
dotnet ef database update 上一个迁移名称
AddOrderStatus,想回退到 InitialCreate,就运行:dotnet ef database update InitialCreate
InitialCreate 迁移完成后的状态__EFMigrationsHistory 表也会同步更新,只保留已执行到目标版本及之前的记录适用于开发或测试环境,想彻底清空结构、从头开始。
dotnet ef database update 0
__EFMigrationsHistory 表仍存在)dotnet ef database update 从头建库仅适用于刚添加、但还没执行 update 的迁移(比如本地写完 Add-Migration 后发现写错了)。
dotnet ef migrations remove
想彻底删掉一个已上线的迁移?不能硬删文件。正确路径是:
dotnet ef database update 上一个迁移名 把数据库回退到位dotnet ef migrations remove 删除该迁移文件(此时它已是“最后一个未应用”的迁移)基本上就这些。回滚本身不复杂,但容易忽略数据库状态与迁移文件的一致性。记住口诀:先动库,再动码;没执行,才能删。