0

私は ADO.NET が初めてで、それを学んでいます。ADO.NET のデータ アダプターは、データ セットにデータを入力してデータベースを更新するときに、原子性または ACID プロパティを単独で提供するのか、それともトランザクションを明示的に使用してこれを実現する必要があるのか​​疑問に思っていました。

まあ言ってみれば:

  • データ アダプターを介してデータベースからデータ セットにデータを取得したい
  • Web サイトに情報を送信する
  • データセットのデータに変更を加える
  • DataAdapter.Update(DataSet) を使用してデータベースを更新する

すべてのステップ (一度に取得できるオフライン データになるため、必要に応じて最初のステップを除外できます) をアトミックに一度に実行したいのですが、トランザクションが必要ですか? そうでない場合、これを達成する方法は?

4

1 に答える 1

0

の実装をReflectorで確認したところ、関連するコマンド( 、、)を順番に実行するだけで、周囲にトランザクションを課すことはないようにSqlDataAdapter見えます。Microsoftが作成した他のすべてのタイプのアダプターも同じように機能すると思います。InsertCommandUpdateCommandDeleteCommand

アトミックアップデートが必要な場合は、独自のトランザクションを作成する必要があります。

using(var scope = new TransactionScope()) {
    adapter.Update(dataSet);
    scope.Complete();
}
于 2009-10-13T12:01:58.107 に答える