使用EF6保存新记录时,主键已经存在

时间:2019-06-21 18:37:51

标签: c# entity-framework-6

我已经使用这个逻辑一个月了,它最近已经停止工作。

var tool = new Tool() { ToolNumber = toolNumber.Trim(), Description = description.Trim() };
context.AddToTools(tool);
context.SaveChanges();

AddToTools看起来像这样:

    public void AddToTools(Tool tool)
    {
        base.AddObject("Tools", tool);
    }

我在context.SaveChanges();上得到了错误

  

System.Data.Entity.Core.UpdateException     HResult = 0x80131501     Message =更新条目时发生错误。有关详细信息,请参见内部异常。

内部异常:

  

{“违反主键约束'PK_Tool'。无法在对象'dbo.Tool'中插入重复键。重复键值为(0)。\ r \ n该语句已终止。“}

当我检查该值时,tool.ID的值为0,并且表中的ID已经为0,因此异常是正确的。

似乎是某种更新,操作系统更新或SqlServer更新,或某些破坏了它。

为什么我不能插入表?

1 个答案:

答案 0 :(得分:0)

以上@Bosco:

  

“主键不再是增量键,因为内部异常声明重复键为0。您需要将确定设置为自动增量”

以某种方式在表定义中将Identity属性更改为no。将其更改为是,一切都很好。