2

これをオンラインで行うための答えを見つけようとしましたが、明らかにそれはできません(データベースではなくアプリレベルで意味します)。データセットを完全に消去し、同時に主キーをリセットする必要があります。何か案は?

別の方法として、データセットを再初期化することもできますが、アプリ内の異なるクラス間でデータセットが共有されているため、これも可能ではないようです (Program.cs で共有データセットを作成しています)。

ありがとう

ファルーク

アップデート:

わかりました私はこれを試しました:

MyDataSet sharedDS = new MyDataSet();

. . .

CleanDS()

{

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

}

元の問題は解決しましたが、System.ArgumentException for Column1 が Table1 に属していないため、DataSet ビューアーで列を表示したり、入力された行を表示したりできます。また、DataSet 全体を手動で再作成しても、同じエラーが発生することに注意してください。何か案は?

4

2 に答える 2

3

autoincrementsseed と 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/autoincrementsseed.aspx

および: http://msdn.microsoft.com/en-us/library/system.data.datacolumn.autoincrementsseed(VS.85).aspx

助けてくれてありがとう!

于 2009-04-26T18:17:31.250 に答える
0

DataSet.Clear()メソッドはあなたが望むことをしますか?

編集

主キーをリセットする必要があるため、DataSetが保持するDataTableについて話し合う必要があります。DataSet.Tables ["MyTable"]。Reset()を呼び出してみましたか?これにより、DataSet全体ではなく、テーブルが元の状態にリセットされます。

編集2

これが自動インクリメント列である場合、DataColumnのAutoIncrementSeedプロパティを0にリセットしてみましたか?

于 2009-04-18T19:42:40.873 に答える