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










