You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在丢失最新迁移文件后恢复到旧EF迁移版本

解决EF Core迁移回滚异常的实操步骤

1. 修正EF迁移历史表

由于丢失了migrationNewThree文件,EF执行回滚命令时无法找到对应迁移的定义,仅在本地标记回滚成功,但数据库的__EFMigrationsHistory表中仍保留着migrationNewOne、migrationNewTwo、migrationNewThree的记录,导致数据库状态和EF的本地记录不匹配。

  • 打开SQL Server管理工具(如SSMS),定位到目标数据库,打开__EFMigrationsHistory表
  • 删除MigrationId字段对应migrationNewOne、migrationNewTwo、migrationNewThree的三条记录,仅保留MigrationOld对应的记录

2. 手动清理新增的数据库表

回滚命令未生效,数据库中仍存在vendorTable和vendorAddressTable,需手动删除:

  • 在SSMS中找到这两张表,若存在外键关联(如vendorAddressTable关联vendorTable),先删除关联表,再删除主表
  • 确认数据库中仅保留invoiceTable、customerTable及__EFMigrationsHistory表

3. 重新应用新功能迁移

若migrationNewOne、migrationNewTwo文件仍存在:

  • 打开项目控制台,执行命令回滚到新功能的前两步:Update-Database migrationNewTwo
  • 重新生成migrationNewThree迁移文件:Add-Migration migrationNewThree(确保DbContext中已正确配置Vendor、VendorAddress实体类)
  • 执行Update-Database完成数据库更新

若新功能迁移文件不全,建议重新生成:

  • 确保DbContext中包含所有新功能的实体及配置
  • 执行Add-Migration NewFeatureCombined(自定义迁移名称),生成包含所有新表和变更的单条迁移文件
  • 执行Update-Database完成更新

关键注意事项

  • 操作数据库前必须备份,避免数据丢失
  • 后续将迁移文件纳入版本控制(如Git),防止再次丢失

内容的提问来源于stack exchange,提问作者Kuth

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 19:30:53