【发布时间】:2019-06-22 06:33:47
【问题描述】:
我已经使用这个逻辑一个月了,最近它停止工作了。
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 H结果=0x80131501 Message=更新条目时发生错误。有关详细信息,请参阅内部异常。
内在的例外:
{"违反 PRIMARY KEY 约束 'PK_Tool'。无法在对象 'dbo.Tool' 中插入重复键。重复键值为 (0)。\r\n语句已终止。"}
当我检查该值时,tool.ID 值为 0,并且表中已经有一个 ID 为 0,因此异常是正确的。
似乎某种更新、操作系统更新或 SqlServer 更新或某些东西损坏了它。
为什么我对表格的插入不起作用?
【问题讨论】:
-
您需要在您的表格和 EF 模型映射中将
pk属性 (tool.id) 设置为IDENTITY。如果您正在使用迁移,那么仅更改 c# 代码就足够了,因为迁移会更改架构。 -
请出示模型工具的代码。
-
主键不再递增,因为内部异常声明重复键为0。您需要将ok设置为自动递增
-
检查这个:stackoverflow.com/questions/16286309/… 注意:我不能评论 que。
-
@Bosco - 准点!不知何故,该字段的定义已更改,因此 ID 不是身份。感谢您的帮助和洞察力。
标签: c# entity-framework-6