EF Core数据库与迁移状态同步及指定迁移执行咨询
解决EF Core数据库与迁移状态同步及指定范围迁移问题
一、同步手动删除表后的迁移状态
你手动删除了Documents表但未通过EF Core操作,此时数据库中的__EFMigrationsHistory表仍记录着创建该表的迁移已执行,导致数据库与代码迁移状态不一致,分两种场景处理:
场景1:需要恢复Documents表
- 在数据库的
__EFMigrationsHistory表中,找到创建Documents表对应的那条迁移记录并删除(比如迁移名为CreateDocumentsTable)。 - 执行命令:
EF Core会重新执行被删除记录的迁移,自动重建Documents表,同时同步迁移状态。Update-Database
场景2:代码中已移除Documents实体(无需恢复表)
- 生成新迁移来记录删除Documents表的操作:
Add-Migration DropDocumentsTable - 打开生成的迁移文件,由于你已手动删除表,可将
Up方法中DropTable("Documents")的代码注释或移除(避免执行时触发“表不存在”的报错)。 - 执行命令完成状态同步:
此操作会将新迁移记录写入Update-Database__EFMigrationsHistory,让数据库状态与代码迁移记录对齐。
二、执行指定范围的迁移集
EF Core支持通过指定目标迁移来执行范围迁移:
- 若要从
mig1升级到mig2(mig2是mig1之后的迁移),直接执行:
EF Core会自动执行Update-Database mig2mig1之后到mig2的所有未执行迁移。 - 若要回滚到
mig1(撤销mig1之后的所有迁移),执行:Update-Database mig1
内容的提问来源于stack exchange,提问作者shubhkr1
相关产品推荐
相关产品推荐

