首先,这不是一篇关于数据库事务的文章。我想更多地了解.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
内的所有内容应该被回滚,但事实并非如此。以下是一个简单的测试。
ImportantObject obj = new ImportantObject(1);
Console.WriteLine(obj.Money);
obj.Withdraw(101);
Console.WriteLine(obj.Money);
假设标准货币金额为100。
我是否遗漏了什么,或者这不是交易应该运作的方式?并且使用此模型会有什么性能损失?