【发布时间】:2013-04-19 13:42:00
【问题描述】:
我有一个像这样的 Person 实体类型:
public partial class Person
{
public int PersonID { get; set; }
public byte Gender { get; set; }
public string IDNumber { get; set; }
}
当我为了将他保存到数据库而创建一个新人时,主键 PersonID 设置为 0,而不是 null。
代码:
var theNewGuy = new MyEntities.Person();
就在这一行之后,theNewGuy.PersonID = 0。问题是,我如何告诉它插入一个新的 Person 并为其分配下一个可用的主键?显然,我不希望它为 0,但数据库中已经有一个 PersonID = 0 的人;
保存代码:
Velo.People.Add(theNewGuy);
Velo.SaveChanges();//throws error
抛出异常: 违反主键约束“PK_PERSON”。无法在对象“dbo.Person”中插入重复键。重复键值为 (0)。 声明已终止。
【问题讨论】:
-
PersonID在您的数据模型中是否被注释为身份? -
不。大概就这么简单,我会改过来告诉你的。
-
看到它是一个
partial类.. 类的其余实现是什么?也许它与您发布的代码有冲突? -
为什么不将 PersonId 设为 autoIncrement 和 Unique?,我认为它会起到作用。
-
如果可能的话,请给我们保存 theNewGuy 到数据库的代码。另外,请给我们抛出的异常,如果有的话。谢谢。
标签: c# asp.net-mvc entity-framework