数据集自动增量问题

本文关键字:问题 数据集 | 更新日期: 2023-09-27 18:25:30

我有一个包含多个表的SQL Server数据库。其中一个列有"ID"(主键)、"Name"和其他列,为了简单起见,我不会在这里提及这些列。"ID"列是自动递增的,是唯一的,当我使用"SQL Server management studio"添加一些行时,"ID"栏会正确递增。数据库是旧的,当前的自动增量是1244左右

现在,我创建了一个C#项目,它使用TYPED数据集处理数据库中的数据。我的数据库一开始是空的,数据集是用表适配器填充的,新行是用我的程序添加的,但到目前为止,我从未遇到过一个问题:当我的程序向数据集添加新行,然后更新数据库(使用表适配器)时,我的数据库中的"ID"列会得到正确的自动递增数字(12451246等),但我在数据集中的"ID"列会变成"-1"、"-2"!怎么了?我如何告诉我的数据集使用数据库指定的自动递增种子,而不是生成它自己的负(??)主键号?

编辑:我使用以下方法获取和比较行:

dsNames.tbNamesRow[] TMP = basedataset.tbNames.Select() as dsNames.tbNamesRow[];
foreach (dsNames.tbNamesRow row in TMP)
{
    string Name = row.Name;
    bool Found = Name == Search;
    if (CompareDelegate != null)
        Found = CompareDelegate(Name, Search);
    if (Found)
    {
        int ID = row.ID;
        break;
    }
}

数据集自动增量问题

我最初的评论有点不正确,我认为你是在从数据库中检索值,而数据集中有不正确的值。

ADO.NET处理防止与断开连接的数据集发生冲突的方法是,它分配负的IDENTITY列值,因为它在断开连接时不知道可能的正数不是冲突。就交易而言,这些(负值)是唯一的。

当您尝试提交更改时,ADO.NET引擎会确定正确的SQL以产生正确的结果。