私はTransactionScope
を使用しており、データをデータベースに保存しています。TransactionScopeは複数のクエリでどのように動作しますか?
データ保存後の同じトランザクション内で、保存するオブジェクトの値を変更しています。
私の質問です:それは変更されたデータを保存するかどうか?そして、通話がどのように機能するのですか(各呼び出しでデータベースのデータを保存するか、transactionObject.Commit()
呼び出し後にデータを保存します)?
私はTransactionScope
を使用しており、データをデータベースに保存しています。TransactionScopeは複数のクエリでどのように動作しますか?
データ保存後の同じトランザクション内で、保存するオブジェクトの値を変更しています。
私の質問です:それは変更されたデータを保存するかどうか?そして、通話がどのように機能するのですか(各呼び出しでデータベースのデータを保存するか、transactionObject.Commit()
呼び出し後にデータを保存します)?
データは、transactionObject.Commit()
に電話する場合に限り、永久に保存されます。保存したオブジェクトを変更しても、オブジェクトを再度保存しない限り、変更内容は反映されません。
Complete
メソッド(this articleを参照)を使用してTransactionScopeがデータをコミットする必要があるとします。 this MSDN articleをお読みください。
これは、と述べている:それは単に自分のステータスのトランザクションマネージャに通知する方法です
。このメソッドを呼び出すと、Currentプロパティを使用してアンビエントトランザクションにアクセスすることはできなくなり、そうすると例外がスローされます。
と:
のTransactionScopeオブジェクトがトランザクションを作成した場合、リソースマネージャ間のコミットの実際の作業は、ステートメントを使用して終了時に行われます。トランザクションを作成しなかった場合は、CommitがCommittableTransactionオブジェクトの所有者によって呼び出されるたびにコミットが発生します。
ただし、最も簡単な方法は、特定のケースでサンプルコードで確認することです。