绑定源尝试更新标识

时间:2015-04-15 08:02:09

标签: c# .net

我使用datagridview为表设置了一个普通的绑定源。我还将ID设置为标识,以便我不必担心它。但每当我在BindingSource上调用.UpdateAll()时,我都会得到SQL异常

  

“无法在表'教师'中为标识列插入显式值   当IDENTITY_INSERT设置为OFF时。“

现在如何告诉绑定Source NOT将空ID列推送到表中?我知道这似乎是一个已经讨论了一百次的问题,但我是新手,这让我发疯了。

1 个答案:

答案 0 :(得分:0)

根据您想要实现的目标,有两种方法。如果您希望您的标识列包含非唯一值(这不是一个好主意,但决定是您自己做的),那么您可以简单地禁用数据库中的标识列:

SET IDENTITY_INSERT Teachers ON;

要还原它,请执行以下操作:

SET IDENTITY_INSERT Teachers OFF;

但可能更有意义的是让你的身份栏自动增量。因此,在设计Teachers表时,ID列应具有以下形式:

[ID] [int] IDENTITY(1,1) NOT NULL

或者,如果您使用的是SQL Server Management Studio:

  1. 去你的桌子。右键单击它并选择Design。
  2. 选择ID列。
  3. 在列属性标签中,找到“标识规范”。
  4. 将“Is Identity”设置为“Yes”,将“Identity Increment”设置为“1”,将“Identity Seed”设置为“1”。
  5. 这应该使您的ID列自动增加,从而在从DataGridView更新数据时避免空值。