TransactionScope真正做了什么

时间:2013-03-07 18:29:01

标签: c# transactions transactionscope distributed-transactions

调查一下,我确认了例如o“myInt”的值在以下场景中没有回滚

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

    t.Rollback();
}

所以它让我想到“TransactionScope是否只回滚与数据库相关的活动?或者事务可以管理其他事情,我不知道那些?”

2 个答案:

答案 0 :(得分:19)

当前事务仅影响称为资源管理器的特定对象。这些对象必须实现特定的接口才能参与事务。 ADO.NET SqlConnection对象就是一个例子。创建一个充当“事务性内存”的对象并不困难。这些对象称为挥发性资源管理器。一个简单的例子是here

答案 1 :(得分:-3)

TransactionScope(和Transactions)仅用于处理数据库查询。 “回滚”只是暂时保留的更改(例如你的int变量)是没有意义的。