В первую очередь, это не будет сообщением о Транзакциях базы данных. Я хочу знать больше о 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.
Я пропустил что-то здесь или являюсь этим не, как транзакции должны работать? И что потери производительности используют эту модель?
Вы можете прочитать Менеджеры энергонезависимых ресурсов в .NET: Bring Transactions to the Common Type by Juval Lowy.
Мне кажется, вы путаетесь с тем, для чего предназначен TransactionScope. TransactionScope предназначен для фиксации или отката изменений в базе данных, к которой вы подключены. Он не отменяет изменения объектов в коде. Он не отменяет значение, содержащееся в 'Деньгах'.
Randy
.То, что вам нужно, называется STM, программная транзакционная память. Посмотрите http://research.microsoft.com/en-us/downloads/6cfc842d-1c16-4739-afaf-edb35f544384/default.aspx