Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C语言中的事务处理#_C#_.net_Transactions - Fatal编程技术网

C# C语言中的事务处理#

C# C语言中的事务处理#,c#,.net,transactions,C#,.net,Transactions,首先,这不是一篇关于数据库事务的文章。我想了解更多关于.NET2.0及更高版本的信息。由于我是针对.NET3.5开发的,因此建议使用较新的模型 现在,我想说的是如下内容 public void Withdraw(double amount) { using (TransactionScope scope = new TransactionScope()) { Money -= amount; if

首先,这不是一篇关于数据库事务的文章。我想了解更多关于.NET2.0及更高版本的信息。由于我是针对.NET3.5开发的,因此建议使用较新的模型

现在,我想说的是如下内容

    public void Withdraw(double amount)
    {
        using (TransactionScope scope = new TransactionScope())
        {
            Money -= amount;

            if (Money > 0)
                scope.Complete();
        }
    }
这意味着当钱小于0时,
TransactionScope
中的所有内容都应该回滚,但事实并非如此

下面是一个简单的测试

        ImportantObject obj = new ImportantObject(1);

        Console.WriteLine(obj.Money);

        obj.Withdraw(101);

        Console.WriteLine(obj.Money);
前提是标准金额为100


我是否错过了一些东西,或者这不是事务应该如何工作的?使用这种模型会造成什么样的性能损失?

您可能想阅读Juval Lowy的文章。

我认为您对TransactionScope的设计用途感到困惑。TransactionScope用于提交或回滚所连接数据库中的更改。它不会反转对代码中对象的更改。它不会逆转“货币”中包含的价值


Randy

您所追求的被称为STM,软件事务性内存。看看吧,这似乎就是我一直在寻找的东西。谢谢