C#WinForms-DataGridView / SQL Compact-主键列中的负整数

时间:2020-03-05 18:46:09  来源:igfitidea点击:

我只是在WinForms中变得肮脏,并且通过一个可爱的教程发现了将数据库表拖到主窗体的设计视图中的魔力。因此,一切都很可爱,我的DataGridView的所有列都得到了精美的展示。

但...

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

知道为什么会这样吗?如果有帮助,则该列为int

解决方案

回答

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

回答

@Brian -1是默认值的不错选择,因为没有"真实"行的标识可能小于零。如果默认值为0或者1,则有可能与现有行发生冲突,从而导致主键冲突。

对于保持脱机状态并在保存之前创建多行的应用程序,通常的做法是继续对每个新行的标识进行反向计数(-2,-3,-4)。然后,在保存它们之后,服务器可以将它们替换为表中真实的" next"值。