重置主键

时间:2009-04-18 19:28:06

标签: c# dataset primary-key

我试图在网上找到答案,但显然无法完成(我的意思是在应用程序级别,而不是数据库)。我需要完全清除我的数据集并同时重置主键。有什么想法吗?

或者,我可以使用的一个hack是重新初始化数据集,但这似乎不可能,因为数据集在应用程序中的不同类之间共享(我在Program.cs中创建共享数据集)。 / p>

由于

法鲁克

更新

好的我试过这个:

MyDataSet sharedDS = new MyDataSet();

。 。 。

CleanDS()

{

    MyDataSet referenceDS = new MyDataSet(); 
    sharedDS.Table1.Reset(); 
    sharedDS.Merge(referenceDS); 

}

我的原始问题已解决,但现在我得到一个System1的System.ArgumentException不属于Table1,我可以在其中看到DataSet Viewer中的列以及查看填充的行。另请注意,我可以手动重新创建整个DataSet,但仍然会出现相同的错误。有什么想法吗?

2 个答案:

答案 0 :(得分:2)

我用autoincrementseed和autoincrementstep尝试了它,它终于有效了。这是供其他人参考的:

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;

请参阅此主题中的推理: http://www.eggheadcafe.com/community/aspnet/10/25407/autoincrementseed.aspx

和: http://msdn.microsoft.com/en-us/library/system.data.datacolumn.autoincrementseed(VS.85).aspx

感谢所有人的帮助!

答案 1 :(得分:0)

DataSet.Clear()方法是否符合您的要求?

修改

因为您说要重置主键,所以您必须讨论DataSet所持有的DataTable。您是否尝试过调用DataSet.Tables [“MyTable”]。重置(),它应该将表重置为原始状态,而不是整个DataSet?

编辑2

如果这是一个自动增量列,您是否尝试将DataColumn的AutoIncrementSeed属性重置为0?