我正在使用PostgreSQL 15.0与EFCore的组合。由于我想通过单击设置一个演示环境,所以我在OnModelCreating(ModelBuilder modelBuilder)
方法中设置了modelBuilder.UseIdentityByDefaultColumns();
。
我的演示数据设置如下所示:
context.DropDowns.AddRange(new List<DropDown>()
{
new()
{
Id = 1,
Value = "Value1",
},
new()
{
Id = 2,
Value = "Value2",
},
});
我在其他实体中使用ID设置FK值时手动设置ID。但是当我想添加一个新值(PostgreSQL应该自动生成ID)时,它会重用现有的PK,我会得到以下错误消息:
SQL错误[23505]:错误:重复的键值违反唯一约束“PK_DropDowns”详细信息:Key(“Id”)=(2)已存在。错误:重复的键值违反唯一约束“PK_DropDowns”详细信息:Key(“Id”)=(2)已存在。错误:重复的键值违反唯一约束“PK_DropDowns”详细信息:Key(“Id”)=(2)已存在。
每次我点击保存,它尝试使用的ID都会增加1,所以在这个例子中,在两次之后(我添加了两个固定ID的DropDown
),它就可以正常工作了。如何处理混合使用自动生成的ID和手动设置的ID的问题?
1条答案
按热度按时间2eafrhcq1#
我现在在演示数据中使用负值作为ID: