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

EF Core新增列触发IDENTITY属性需删列重建错误解决咨询

解决方案

核心报错原因

该报错本质是EF Core本地迁移快照、__EFMigrationsHistory系统表记录与当前数据模型三者不匹配导致的误判:即使你只新增了普通int列,EF对比历史快照时仍会误以为你要修改主键的IDENTITY自增属性。你之前手动删表的操作没有解决快照不匹配的核心问题,因此报错持续触发。

实操修复步骤(无需重建全库,10分钟内可完成)

  • 第一步:清除项目内的历史迁移文件
    打开项目根目录下的Migrations文件夹,删除文件夹内的所有文件,包括后缀为Snapshot.cs的迁移快照文件
  • 第二步:清理数据库内的迁移历史
    连接到你的SQL Server数据库,找到系统生成的__EFMigrationsHistory表,删除该表所有记录或者直接删除整张表,后续EF会自动重建该表
  • 第三步:生成全新的初始迁移
    在VS的包管理器控制台(PMC)中执行命令:
    Add-Migration InitialRebuild
  • 第四步:执行数据库更新
    继续在PMC中执行命令:
    Update-Database

执行完成后EF会完全基于你当前最新的模型生成所有表结构,不会再触发IDENTITY属性修改的报错。

关于全量重建库的疑问

完全不需要花费数天到数周时间手动重建表结构。该问题的根源是EF迁移快照的不一致,和数据库本身无关,就算你新建Azure数据库,如果没有删除旧的迁移文件,执行更新时仍会触发完全相同的报错。

如果执行上述步骤后仍然报错,可以检查你新增的int列是否被误加了[DatabaseGenerated(DatabaseGeneratedOption.Identity)]特性,或者Fluent API配置中是否错误将普通列设置为了自增属性。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 02:45:02