【发布时间】: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