首先,这不是一篇关于数据库事务的文章。我想了解更多关于 TransactionModel 的信息在 .NET 2.0 及更高版本中。由于我是针对 .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);
假设 Stadard Money 金额为 100。
我是不是漏掉了什么,或者这不是交易的运作方式?使用该模型的性能损失是多少?
最佳答案
您可能想阅读 Volatile Resource Managers in .NET: Bring Transactions to the Common Type作者:Juval Lowy。
关于c# - C# 中的事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2020660/