12

それを調べて、たとえば、次のシナリオで値o"myInt"がロールバックされないことを確認しました

int myInt = 10;
using (TransactionScope scope = new TransactionScope(TransactionScopeOption.RequiresNew))
{
    myInt=20;
    Transaction t = Transaction.Current;

    t.Rollback();
}

そのため、「TransactionScopeはデータベースに関連するアクティビティのみをロールバックするのですか?それとも、トランザクションが管理できる他の機能があり、それらに気づいていませんか?」と考えました。

4

2 に答える 2

21

現在のトランザクションは、リソースマネージャーと呼ばれる特定のオブジェクトにのみ影響します。これらのオブジェクトは、トランザクションに参加するために特定のインターフェースを実装する必要があります。ADO.NETSqlConnectionオブジェクトはその一例です。「トランザクションメモリ」として機能するオブジェクトを作成することは難しくありません。これらのオブジェクトは、VolatileResourceManagerと呼ばれます。簡単な例はここにあります。

于 2013-03-07T18:43:08.090 に答える
-4

TransactionScope(およびTransactions)は、データベースクエリの処理にのみ使用されます。とにかく一時的にしか保持されない変更(int変数など)を「ロールバック」することは実際には意味がありません。

于 2013-03-07T18:34:05.590 に答える