2010-01-07 57 views
8

首先,這不會是關於數據庫事務的文章。我想知道更多關於.NET 2.0和更高版本中的TransactionModel。由於我正在開發針對.NET 3.5的更新模型。現在在C#中的交易#

,我想acheive是像下面

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); 

前提是Stadard金額爲100

難道我錯過這裏的東西,或者這是不是交易應如何工作的?使用這種模型的性能損失是多少?

回答

6

我認爲你對TransactionScope設計要做的事感到困惑。 TransactionScope旨在提交或回滾連接到的數據庫中的更改。它不會反轉對代碼中對象的更改。它不會扭轉「Money」中包含的值。

蘭迪