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值。
我在为带有测试数据的 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值。