gpt4 book ai didi

c# - 实体的主键字段设置为 0 而不是 null

转载 作者:行者123 更新时间:2023-12-03 21:38:21 25 4
gpt4 key购买 nike

我有一个 Person 实体类型,如下所示:

public partial class Person
{
public int PersonID { get; set; }
public byte Gender { get; set; }
public string IDNumber { get; set; }
}

当我为了将他保存到数据库而创建一个新 Person 时,主键 PersonID 设置为 0,而不是 null。

编码:
var theNewGuy = new MyEntities.Person();

在这一行之后,theNewGuy.PersonID = 0。问题是,我如何告诉它插入一个新的 Person 并为其分配下一个可用的主键?显然,我不希望它为 0,但数据库中已经有一个 PersonID = 0;

保存代码:
Velo.People.Add(theNewGuy);
Velo.SaveChanges();//throws error

抛出异常:
违反 PRIMARY KEY 约束“PK_PERSON”。无法在对象“dbo.Person”中插入重复键。重复的键值为 (0)。
该语句已终止。

最佳答案

主键不能为 Null。 PK 必须是唯一的,而 Null 不是。另外,int不是可以为空的类型,所以它的默认值为 0。

EntityFramework 应该能够找出 PersonIDPerson的键,但以防万一尝试粘贴 [Key]属性就在那里。此外,您可以将其强制为 auto increment列添加 [DatabaseGenerated(DatabaseGeneratedOption.Identity)]归因于您的 PersonID属性(property)。

关于c# - 实体的主键字段设置为 0 而不是 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16106055/

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