【问题标题】:Transactions in C#C# 中的事务
【发布时间】:2010-01-07 13:42:23
【问题描述】:

首先,这不是一篇关于数据库事务的文章。我想了解更多关于 .NET 2.0 及更高版本中的 TransactionModel 的信息。由于我正在开发针对 .NET 3.5 的新模型。

现在,我想要实现的是如下所示

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

            if (Money > 0)
                scope.Complete();
        }
    }

这意味着当 Money 小于 0 时,TransactionScope 中的所有内容都应该是 RolledBack,但事实并非如此。

一个简单的测试如下

        ImportantObject obj = new ImportantObject(1);

        Console.WriteLine(obj.Money);

        obj.Withdraw(101);

        Console.WriteLine(obj.Money);

假设标准货币金额为 100。

我在这里遗漏了什么,或者这不是交易应该如何运作的吗?使用此模型会造成哪些性能损失?

【问题讨论】:

    标签: c# .net transactions


    【解决方案1】:

    【讨论】:

      【解决方案2】:

      我认为您对 TransactionScope 的设计目的感到困惑。 TransactionScope 旨在提交或回滚您所连接的数据库中的更改。它不会反转对代码中对象的更改。它不会反转 'Money' 中包含的值。

      兰迪

      【讨论】:

        【解决方案3】:

        【讨论】:

        • 似乎这就是我一直在寻找的。谢谢。
        猜你喜欢
        • 1970-01-01
        • 2012-01-27
        • 2018-05-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多