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

EF7执行Update-Database时所有迁移均运行的技术咨询

迁移重复执行问题的排查与解决

排查步骤

  • 核对迁移ID一致性:检查数据库中__EFMigrationsHistory表的MigrationId值,与Get-Migration输出的id列是否完全匹配(包括空格、大小写、下划线),任何不匹配都会导致EF判定迁移未应用。
  • 验证连接目标:执行Get-DbContext命令,确认当前DbContext指向的数据库是你实际操作的目标库,避免因连接到其他数据库(如测试库、备用库)导致EF找不到已有的迁移历史。
  • 检查迁移文件完整性:确认本地迁移文件的MigrationId未被手动修改,Up()/Down()方法的逻辑未被篡改,否则EF会将其识别为新迁移。

解决方法

  1. 手动标记迁移为已应用
    确认数据库已实际执行过所有迁移后,执行以下命令(替换为列表中最后一个迁移的ID):

    Update-Database -Migration "20230822155929_Company_AddressId_Null"
    

    该命令会将指定迁移及之前的所有迁移标记为已应用状态,不会重复执行迁移脚本。

  2. 修复ID不匹配问题
    如果数据库中__EFMigrationsHistory的记录与本地迁移ID不一致,可手动修改表中的MigrationId值,使其与Get-Migration输出的id完全一致(操作前请务必备份数据库)。

  3. 重置迁移(极端场景)
    若上述方法均无效,可备份业务数据后重置迁移流程:

    • 删除数据库中的__EFMigrationsHistory表
    • 删除项目内所有已生成的迁移文件
    • 重新生成初始迁移并同步到数据库:
      Add-Migration InitialCreate -Force
      Update-Database
      

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 21:13:14