我有一个简单的 VS 2012 C# 表单,其中包含绑定到绑定源的数据网格控件。这绑定到的 SQL Server 数据源具有一个标识列 (ID),它也是主键。
在此 ID 字段的数据集属性中,我有 AutoIncrement = true、AutoIncrement Seed = -1(默认)和 AutoIncrementStep = -1(默认)
我无法将新行保存到数据库中。
如果我使用工具条添加新记录,清除 ID 字段,然后单击保存图标,我会收到此异常:“当 IDENTITY INSERT 设置为关闭时,无法在表 xxxx 中插入标识列的显式值”。如果我将自动生成的值“-1”留在字段中,我会得到同样的异常。
附加到保存按钮的代码:
private void tblClassificationBindingNavigatorSaveItem_Click(object sender, EventArgs e)
{
this.Validate();
this.tblClassificationBindingSource.EndEdit();
this.tableAdapterManager.UpdateAll(this.exportComplianceSISVTDataSet);
}
执行最后一步会导致异常。
一些论坛回复者建议将 IDENTITY INSERT 设置为“ON”作为解决方法,但许多人建议不要这样做。