C# C语言中的事务处理#
首先,这不是一篇关于数据库事务的文章。我想了解更多关于.NET2.0及更高版本的信息。由于我是针对.NET3.5开发的,因此建议使用较新的模型 现在,我想说的是如下内容C# C语言中的事务处理#,c#,.net,transactions,C#,.net,Transactions,首先,这不是一篇关于数据库事务的文章。我想了解更多关于.NET2.0及更高版本的信息。由于我是针对.NET3.5开发的,因此建议使用较新的模型 现在,我想说的是如下内容 public void Withdraw(double amount) { using (TransactionScope scope = new TransactionScope()) { Money -= amount; if
public void Withdraw(double amount)
{
using (TransactionScope scope = new TransactionScope())
{
Money -= amount;
if (Money > 0)
scope.Complete();
}
}
这意味着当钱小于0时,TransactionScope
中的所有内容都应该回滚,但事实并非如此
下面是一个简单的测试
ImportantObject obj = new ImportantObject(1);
Console.WriteLine(obj.Money);
obj.Withdraw(101);
Console.WriteLine(obj.Money);
前提是标准金额为100
我是否错过了一些东西,或者这不是事务应该如何工作的?使用这种模型会造成什么样的性能损失?您可能想阅读Juval Lowy的文章。我认为您对TransactionScope的设计用途感到困惑。TransactionScope用于提交或回滚所连接数据库中的更改。它不会反转对代码中对象的更改。它不会逆转“货币”中包含的价值
Randy您所追求的被称为STM,软件事务性内存。看看吧,这似乎就是我一直在寻找的东西。谢谢