我刚刚开始熟悉 WinForms,通过一个可爱的教程,我发现了将数据库表拖到主窗体的设计视图上的魔力。所以,一切都很可爱,我的 DataGridView 的所有列都表现得很漂亮。

但...

当我针对这个全新的空 .sdf 运行应用程序时(我创建的两个表为空保存,它们本身是空的),每当我尝试时,我都会在与主键/身份列对应的列中得到 -1创建第一条记录。

知道为什么会发生这种情况吗?如果有帮助的话,该专栏是 int.

有帮助吗?

解决方案

由于它是一个 Identity 列,并且您尚未将其保存到数据库中,因此它是 -1。我在这里假设这是在将表保存回数据库之前,对吗?您需要先执行插入,然后才能正确设置该值。

其他提示

@Brian -1 是默认值的一个不错的选择,因为没有“真实”行的标识可能小于零。如果它默认为 0 或 1,则它有可能与现有行冲突,导致主键冲突。

对于在保存之前保持离线状态并创建多行的应用程序,常见的做法是对每个新行的标识继续向后计数(-2、-3、-4)。然后,当它们被保存时,服务器可以将它们替换为表中真正的“下一个”值。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top