2

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

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

谢谢

法鲁克

更新:

好的,我试过这个:

MyDataSet sharedDS = new MyDataSet();

. . .

清洁DS()

{

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

}

我的原始问题已解决,但现在我得到一个 System.ArgumentException for Column1 does not belongs to Table1 在那里我可以看到 DataSet Viewer 中的列以及填充的行。另请注意,我可以手动重新创建整个数据集,但我仍然得到同样的错误。有任何想法吗?

4

2 回答 2

3

我用 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

感谢你的帮助!

于 2009-04-26T18:17:31.250 回答
0

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

编辑

因为您说要重置主键,所以您必须在 DataSet 保存的 DataTables 上谈论。您是否尝试过调用 DataSet.Tables["MyTable"].Reset(),它应该将表重置为原始状态,而不是整个 DataSet?

编辑 2

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

于 2009-04-18T19:42:40.873 回答