EF Core怎么删除迁移 EF Core删除迁移(Remove-Migration)教程

EF Core 删除迁移需确保数据库状态、迁移历史与代码模型三者一致。仅删未应用迁移用 remove 命令;删已应用迁移须先回滚再顺序删除;清空全部迁移需先重置数据库再逐个移除并重建初始迁移。

EF Core 删除迁移不是简单删文件,关键在顺序和状态一致性。直接删迁移类或数据库记录容易导致模型与数据库脱节,后续迁移失败。

只删最后一次未应用的迁移

这是最常见也最安全的操作场景:刚执行 dotnet ef migrations add 生成了新迁移,但还没运行 dotnet ef database update

  • 用命令 dotnet ef migrations remove 即可撤回上一次迁移文件
  • 该命令会自动删除迁移类(.cs 文件)和快照(.Designer.cs 和 .ModelSnapshot.cs)
  • VS 用户也可右键项目 → Entity Framework Core → 移除最后一次迁移

要删已应用到数据库的迁移

比如 MigrationA、MigrationB、MigrationC 已逐个更新进库,现在想彻底去掉 B 和 C。

  • 先回滚数据库:运行 dotnet ef database update MigrationA,EF Core 会按顺序执行 B 和 C 的 Down() 方法,并从 __EFMigrationsHistory 表中清除这两条记录
  • 再删代码文件:分别执行 dotnet ef migrations remove 两次(注意:必须先删 C,再删 B;不能跳过中间步骤)
  • 删完后,当前模型应与 MigrationA 时完全一致,否则下次 add-migration 可能生成意外差异

清空全部迁移回到初始状态

适合开发早期重构模型,或想从头开始管理迁移。

  • 先重置数据库:dotnet ef database update 0(会删掉所有表,慎用!)
  • 再逐个删迁移文件:dotnet ef migrations remove 直到命令报错(说明已无迁移可删)
  • 最后重新建初始迁移:dotnet ef migrations add InitialCreate

基本上就这些。核心就一条:数据库状态、迁移历史、代码模型三者必须对得上。删迁移不是目的,保持可追溯、可重复、可协作才是关键。