Транзакции в C#

В первую очередь, это не будет сообщением о Транзакциях базы данных. Я хочу знать больше о TransactionModel в.NET 2.0 и выше. Так как я разрабатываю против.NET, 3,5 более новых модели являются apprechiated.

Теперь, то, чего я хотел бы достигнуть, является чем-то как следующее

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

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

Который означал бы это, когда Деньги - меньше чем 0, все в TransactionScope должен быть RolledBack, однако, это не.

Простой тест, как сопровождается

        ImportantObject obj = new ImportantObject(1);

        Console.WriteLine(obj.Money);

        obj.Withdraw(101);

        Console.WriteLine(obj.Money);

При условии, что Денежная сумма Stadard равняется 100.

Я пропустил что-то здесь или являюсь этим не, как транзакции должны работать? И что потери производительности используют эту модель?

8
задан Filip Ekberg 7 January 2010 в 13:42
поделиться

3 ответа

10
ответ дан 5 December 2019 в 08:52
поделиться

Мне кажется, вы путаетесь с тем, для чего предназначен TransactionScope. TransactionScope предназначен для фиксации или отката изменений в базе данных, к которой вы подключены. Он не отменяет изменения объектов в коде. Он не отменяет значение, содержащееся в 'Деньгах'.

Randy

.
6
ответ дан 5 December 2019 в 08:52
поделиться

То, что вам нужно, называется STM, программная транзакционная память. Посмотрите http://research.microsoft.com/en-us/downloads/6cfc842d-1c16-4739-afaf-edb35f544384/default.aspx

3
ответ дан 5 December 2019 в 08:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: