Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 重置主键_C#_Dataset_Primary Key - Fatal编程技术网

C# 重置主键

C# 重置主键,c#,dataset,primary-key,C#,Dataset,Primary Key,我曾试图在网上找到解决办法,但显然无法做到(我的意思是在应用程序层面,而不是数据库层面)。我需要完全清除数据集,同时重置主键。有什么想法吗 或者,我可以使用的一种黑客方法是重新初始化数据集,但这似乎不太可能,因为数据集在应用程序中的不同类之间共享(我正在Program.cs中创建共享数据集) 谢谢 法鲁克 更新: 好的,我试过这个: MyDataSet sharedDS=新建MyDataSet() 。 . . CleanDS() { } 我原来的问题解决了,但现在我得到了一个System.A

我曾试图在网上找到解决办法,但显然无法做到(我的意思是在应用程序层面,而不是数据库层面)。我需要完全清除数据集,同时重置主键。有什么想法吗

或者,我可以使用的一种黑客方法是重新初始化数据集,但这似乎不太可能,因为数据集在应用程序中的不同类之间共享(我正在Program.cs中创建共享数据集)

谢谢

法鲁克

更新:

好的,我试过这个:

MyDataSet sharedDS=新建MyDataSet()

。 . .

CleanDS()

{

}

我原来的问题解决了,但现在我得到了一个System.ArgumentException for Column1不属于表1,在表1中,我可以在数据集查看器中查看列,也可以查看填充的行。还请注意,我可以手动重新创建整个数据集,但仍然会出现相同的错误。有什么想法吗?

这个方法能满足你的需要吗

编辑 因为您说要重置主键,所以必须讨论数据集所保存的数据表。是否尝试调用DataSet.Tables[“MyTable”].Reset(),该函数应将表重置为其原始状态,而不是整个数据集

编辑2
如果这是一个自动递增列,您是否尝试过将DataColumn的属性重置为0?

我使用自动递增种子和自动递增步骤进行了尝试,最终成功了。以下内容供他人参考:

sharedDS.Clear();
sharedDS.Table1.Columns[0].AutoIncrementStep = -1;
sharedDS.Table1.Columns[0].AutoIncrementSeed = -1;
sharedDS.Table1.Columns[0].AutoIncrementStep = 1;
sharedDS.Table1.Columns[0].AutoIncrementSeed = 1;
请参阅此线程中的推理:

以及:


谢谢大家的帮助

我不明白你在干什么。什么是“清除我的数据集”和“重置主键”。你说的是ADO.NET吗?您需要解决的实际问题是什么?假设我在一个数据表中有10条记录(主键从1到10),我执行一个datatable.clear(),它将删除所有10条记录。但是,当我在中插入新记录时,我希望将主键重新设置为从1开始…使用.Clear()它将从11开始。问题是如何在C#代码中为数据集表实现与truncate table(在sql中)或DBCC CHECKIDENT(table,reseed,0)相同的结果。清除仅删除所有数据,如果在此之后插入新记录,主键将从以下位置开始:最后一个记录键+1是我尝试了datatable。重置()方法,但它删除了所有列和外键约束。这听起来似乎有道理,但不幸的是,这不起作用。我想我是通过另一种方式得到它的,我会在一些测试后将其作为答案发布…好的,我尝试了这个:MyDataSet sharedDS=new MyDataSet()。CleanDS(){MyDataSet referenceDS=new MyDataSet();sharedDS.Table1.Reset();sharedDS.Merge(referenceDS);}我原来的问题解决了,但现在我得到了一个System.ArgumentException for Column1不属于表1,在表1中我可以在数据集查看器中看到列,也可以看到填充的行。还请注意,我可以手动重新创建整个数据集,但仍然会出现相同的错误。有什么想法吗?对不起,这里有一些格式:MyDataSet sharedDS=new MyDataSet()。CleanDS(){MyDataSet referenceDS=new MyDataSet();sharedDS.Table1.Reset();sharedDS.Merge(referenceDS);}
sharedDS.Clear();
sharedDS.Table1.Columns[0].AutoIncrementStep = -1;
sharedDS.Table1.Columns[0].AutoIncrementSeed = -1;
sharedDS.Table1.Columns[0].AutoIncrementStep = 1;
sharedDS.Table1.Columns[0].AutoIncrementSeed = 1;