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

SQL Server中Entity Framework迁移时Guid为何被转为整数?

问题排查与解决方法
  • 检查实体类的Id字段配置
    确认出问题的实体中,Guid类型Id字段的特性配置是否正确。如果用DataAnnotations,要确保配置如下:

    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public Guid Id { get; set; }
    

    若使用Fluent API,需在OnModelCreating方法里做对应配置:

    modelBuilder.Entity<你的实体类>()
        .Property(e => e.Id)
        .HasDefaultValueSql("NEWID()") // 也可根据需求用NEWSEQUENTIALID()
        .ValueGeneratedOnAdd();
    

    避免因未指定Guid的生成策略,导致EF默认按int类型处理自增标识列。

  • 清理旧迁移文件与迁移历史
    仅删除数据库表无法解决问题,需先删除项目中所有旧的迁移文件,再清空或删除数据库里的__EFMigrationsHistory表。之后重新执行Add-Migration InitialCreate(或自定义迁移名称),再运行Update-Database,确保新迁移基于当前实体类的正确配置生成。

  • 检查数据库上下文的映射逻辑
    查看DbContext的OnModelCreating方法,确认是否存在针对该实体Id字段的错误映射,比如误写了.HasColumnType("int")这类配置,导致EF生成迁移时将Guid转为int类型。

  • 清理项目编译缓存
    若之前曾将该实体的Id字段设为int后改回Guid,可能存在编译缓存残留。可以删除项目的bin和obj文件夹,重新编译后再尝试生成迁移。

内容的提问来源于stack exchange,提问作者Jason.Net

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 19:14:54