gpt4 book ai didi

postgresql - 使用 Entity Framework Core 时自动增量值在 PostgreSQL 中不起作用

转载 作者:行者123 更新时间:2023-11-29 11:59:11 34 4
gpt4 key购买 nike

PostgreSQL 的自增功能似乎不起作用。

我有以下代码:

namespace project.Models
{
public class DatabaseModel
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
[Column(Order=1, TypeName="integer")]
public int ID { get; set; }
}
}

当我更新数据库时(在执行迁移之后),ID 列是主键而不是自动递增。

当我尝试向数据库添加新对象时,出现以下错误:

Microsoft.EntityFrameworkCore.DbContext[1]
An exception occurred in the database while saving changes.
Microsoft.EntityFrameworkCore.DbUpdateException: An error occurred while updating the entries. See the inner exception for details. ---> Npgsql.PostgresException: 23502: null value in column "ID" violates not-null constraint

谁能帮忙解决这个问题?如何让 key 自动递增?

最佳答案

[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int ID { get; set; }

要在新模型上为所有值生成的属性使用标识列,只需将以下内容放在上下文的 OnModelCreating() 中:

builder.ForNpgsqlUseIdentityColumns();

这将使所有具有 .ValueGeneratedOnAdd() 的键和其他属性默认具有 Identity。您可以使用 ForNpgsqlUseIdentityAlwaysColumns() 始终具有标识,也可以使用 UseNpgsqlIdentityColumn() 和 UseNpgsqlIdentityAlwaysColumn() 在逐个属性的基础上指定标识。

postgres efcore value generation

关于postgresql - 使用 Entity Framework Core 时自动增量值在 PostgreSQL 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40341855/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com