【发布时间】:2012-03-11 21:21:13
【问题描述】:
我有一个包含多个表的 SQL Server 数据库。其中之一具有“ID”(主键)、“名称”和其他列,为简单起见,我不会在此提及。 “ID”列是自动递增的,唯一的,当我使用“SQL Server management studio”添加一些行时,“ID”列会正确递增。数据库很旧,当前的自动增量为 1244 左右。
现在,我创建了一个 C# 项目,它使用 TYPED 数据集来处理数据库中的数据。我的数据库开始为空,使用表适配器填充数据集,使用我的程序添加新行,但到目前为止我从未偶然发现一个问题:当我的程序向数据集添加新行时,然后更新数据库(使用表适配器),“我的数据库中的“ID”列得到正确的自动递增数字(1245,1246 等),但我在数据集中的“ID”列得到“-1”、“-2”!有什么问题?如何告诉我的数据集使用数据库指定的自动增量种子,而不是生成它自己的 NEGATIVE (???) 主键号?
编辑: 我使用这个获取并比较行:
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;
}
}
【问题讨论】:
-
您如何从数据库中检索值?我想你没有投射到正确的类型。