事务范围(TransactionScope)到底是做什么的?

12

我查看了相关情况,验证后发现在下面的场景中,“myInt”的值并没有回滚。

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

    t.Rollback();
}

这让我想到了一个问题:“TransactionScope仅回滚与数据库相关的操作吗?还是它可以管理其他事物,只是我不知道?”

2个回答

21

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


-4

TransactionScope(和Transactions)仅用于处理数据库查询。撤消仅针对暂时保留的更改(例如您的int变量),这并没有太多意义。


你说的完全没有意义...如果我要将这个值保存到文本文件中怎么办?那么它会回滚吗? - Leonardo
不,我的意思是非持久化数据。FileWriter会有自己的“回滚”更改机制,但你仍然不能使用TransactionScope。 - crazylpfan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接