我使用datagridview为表设置了一个普通的绑定源。我还将ID设置为标识,以便我不必担心它。但每当我在BindingSource上调用.UpdateAll()时,我都会得到SQL异常
“无法在表'教师'中为标识列插入显式值 当IDENTITY_INSERT设置为OFF时。“
现在如何告诉绑定Source NOT将空ID列推送到表中?我知道这似乎是一个已经讨论了一百次的问题,但我是新手,这让我发疯了。
答案 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:
这应该使您的ID列自动增加,从而在从DataGridView更新数据时避免空值。