Прежде всего, это не будет пост о транзакциях с базой данных. Я хочу узнать больше о TransactionModel в .NET 2.0 и выше. Поскольку я работаю с .NET 3.5, новые модели оценены.
Теперь я хотел бы получить что-то вроде следующего
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);
При условии, что сумма стандартных денег равна 100.
Я что-то упустил здесь или это не так, как транзакции должны работать? И каковы потери производительности при использовании этой модели?