EF Core 迁移和 PostgreSQL - 自动增量列出错

EF Core Migration and PostgreSQL - getting error with auto increment column

我在为带有测试数据的 postgresql 添加迁移时遇到以下错误。

如果我在 HasData 方法中指定 Id,添加迁移工作正常。

The seed entity for entity type 'Employee' cannot be added because a non-zero value is required for property 'Id'. Consider providing a negative value to avoid collisions with non-seed data.

员工模型

public class Employee
{
      [Key]
      public int Id { get; set; }

      public string Name { get; set; }
}

在 OnModelCreating 方法中

modelBuilder.HasPostgresExtension("uuid-ossp")
    .UseIdentityColumns();

modelBuilder.Entity<Employee>(e =>
{
    e.Property(p => p.Id).UseIdentityAlwaysColumn();
    e.HasData(
                new Employee { Name = "Name1" },
                new Employee { Name = "Name2" },
                new Employee { Name = "Name3" }
            );
});

我和一个朋友谈过这个问题,他能找出原因。基本上,如果您使用 HasData 在 table 上插入数据,则必须提供密钥。这是一个要求。

这是微软的解释,Data Seeding - Limitations of model seed data

所以这回答了我的问题。我现在要做的就是专门添加Id值。