0

DataAdapter には、エラーが発生した場合でも DataAdapter.Update コマンドの処理を続行する「True」に設定できる ContinueUpdateOnError プロパティがあります。これは理想的であるため、挿入に失敗したデータの各行でエラーをキャッチできます。ただし、これは、バッチ処理がオフになっている場合 (DataAdapter.UpdateBatchSize = 1) にのみ正しく機能します。

DataAdapter.UpdateBatchSize が 0 またはバッチ処理をオンにする別の数値に設定され、バッチのレコード内でエラーが発生した場合、バッチ全体が更新に失敗します。明らかに、これは私が望んでいることではありません。

理想的には、2 つのシナリオを組み合わせて使用​​したいと考えています。バッチ処理を使用できるようにして、行の挿入時にデータベースへのラウンドトリップを減らしたいと考えていますが、同時に、発生した個々の行エラーをキャッチできるようにしたいと考えています (バッチがオンになっていて、ContinueUpdateOnError が「True」に設定されていると、何らかの理由で機能しません)。私には、それは何らかの方法で行わなければならないように見えます。挿入ごとにデータベースにトリップして各行を個別に挿入し、各行のエラーをキャッチするか、バッチをサーバーに送信しようとし、バッチで行が失敗した場合、バッチ全体が失敗します。

何かご意見は?

4

1 に答える 1

0

MSDN のページ「DataAdapter.ContinueUpdateOnError プロパティ」から:

ContinueUpdateOnError が true に設定されている場合、行の更新中にエラーが発生しても例外はスローされません。行の更新はスキップされ、エラー情報はエラーのある行の RowError プロパティに配置されます。DataAdapter は、後続の行を更新し続けます。

また、MSDN のページ「DataAdapters (ADO.NET) を使用したバッチ操作の実行」から:

バッチ実行には、個々のステートメントの実行と同じ効果があります。ステートメントは、ステートメントがバッチに追加された順序で実行されます。エラーは、バッチ モードが無効になっている場合と同様に、バッチ モードで処理されます。

したがって、何か間違ったことをしたか、これに関する Microsoft のドキュメントは信頼できません。

于 2012-02-27T22:50:53.293 に答える