C# 重置主键
我曾试图在网上找到解决办法,但显然无法做到(我的意思是在应用程序层面,而不是数据库层面)。我需要完全清除数据集,同时重置主键。有什么想法吗 或者,我可以使用的一种黑客方法是重新初始化数据集,但这似乎不太可能,因为数据集在应用程序中的不同类之间共享(我正在Program.cs中创建共享数据集) 谢谢 法鲁克 更新: 好的,我试过这个: MyDataSet sharedDS=新建MyDataSet() 。 . . CleanDS() { } 我原来的问题解决了,但现在我得到了一个System.ArgumentException for Column1不属于表1,在表1中,我可以在数据集查看器中查看列,也可以查看填充的行。还请注意,我可以手动重新创建整个数据集,但仍然会出现相同的错误。有什么想法吗?这个方法能满足你的需要吗 编辑 因为您说要重置主键,所以必须讨论数据集所保存的数据表。是否尝试调用DataSet.Tables[“MyTable”].Reset(),该函数应将表重置为其原始状态,而不是整个数据集 编辑2C# 重置主键,c#,dataset,primary-key,C#,Dataset,Primary Key,我曾试图在网上找到解决办法,但显然无法做到(我的意思是在应用程序层面,而不是数据库层面)。我需要完全清除数据集,同时重置主键。有什么想法吗 或者,我可以使用的一种黑客方法是重新初始化数据集,但这似乎不太可能,因为数据集在应用程序中的不同类之间共享(我正在Program.cs中创建共享数据集) 谢谢 法鲁克 更新: 好的,我试过这个: MyDataSet sharedDS=新建MyDataSet() 。 . . CleanDS() { } 我原来的问题解决了,但现在我得到了一个System.A
如果这是一个自动递增列,您是否尝试过将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;