2012-03-07 11 views
0

私はADO.NET DataSetを受け入れるWebサービスを扱っています。 Webサービスは、1000を超える行がデータセット内の10個またはそれ以上のテーブルすべてにわたって変更された場合に、サブミッションを拒否します。.NETデータセットを分割しますか?

私は自分のデータセットを取って、それを1000個未満の行のチャンクに分割する必要があります。 DataSet.GetChanges()を使用して縮小データセットを作成できますが、それでも変更された行の制限を超える可能性があります。多くの場合、1つの表に1000以上の変更があります。

データセットの空のコピーを作成します。 制限に達するまで、DataTableCollectionと.Add行を個別に新しいテーブルに反復処理します。新しいデータセットを開始し、すべてを完了するまで繰り返します。

私はこれに簡単なアプローチがありませんか?

+0

レコードをコピーすると_changed_ステータスと詳細が失われます。 –

答えて

2

これは問題を尋ねています。多くの場合、あるテーブルへの変更は別のテーブルの変更に依存します。これらを分割したくない、または非常に注意深い場合を除き、問題をデバッグするのが難しいかもしれない悪いことが起こることはありません。おそらく、ここで行う「正しい」ことは、Webサービスに変更を頻繁に送信することではなく、頻繁に変更を送信することです。

+0

良い点。しかし、このケースでは、データ・セットを順番に変更して正しい順序で処理することができます。 –

+0

注文に関するものではありません。あなたのアプリが最初のテーブルの変更を提出したとしたら、クラッシュするか、他の関連するテーブルが送信される前にPCが抜かれたり、これでデータベースが悪い状態になっています。 –

+0

しかし、この特定のケースでは、それはうまくいくでしょう。コードはデータの追加だけを行い、順序が従われている限り、単一のテーブル内の単一の行の原子レベルは問題ありません。私はこれが常にそうであるとは限りませんが、このシナリオでは、私は大丈夫です。 –

関連する問題