我有一个 SQL Server 数据库。该数据库有一个名为 Item 的表。项目有一个名为“ID”的属性。 ID 是我表上的主键。这个主键是一个增量值为 1 的整数。当我尝试插入记录时,我收到一条错误消息:
Cannot insert explicit value for identity column in table 'Item' when IDENTITY_INSERT is set to OFF.".
我正在尝试使用以下代码插入记录:
public int AddItem(Item i)
{
try
{
int id = 0;
using (DatabaseContext context = new DatabaseContext())
{
i.CreatedOn = DateTime.UtcNow;
context.Items.InsertOnSubmit(i);
context.SubmitChanges();
id = i.ID;
}
return id;
}
catch (Exception e)
{
LogException(e);
}
}
当我在提交之前查看 i.ID 时,我注意到 i.ID 设置为 0。这意味着我正在尝试插入 0 作为标识。但是,我不确定它应该是什么。有人可以帮帮我吗?
谢谢!
最佳答案
这听起来很简单,好像您的模型没有意识到它是一个身份; ID
列应标记为数据库生成(UI 中的 Auto Generated Value
,或 xml 中的 IsDbGenerated
),并且可能作为首要的关键。然后它不会尝试插入它,并在写入后正确更新值。
关于c# - IDENTITY INSERT 和 LINQ to SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6139163/