2011-12-12 46 views
1

這裏是我的編碼asp.Net TransactionScope的錯誤

using (TransactionScope scope = new TransactionScope()) 
    { 
     using (DataAccess.Document Access = new DataAccess.Document()) 
     { 
      if (toSave.Document.Rows.Count > 0) 
      { 
       Access.SaveDocument(docToSave); 
      } 
      if (toUpdate.Document.Rows.Count > 0) 
      { 
       Access.UpdateEachDocument(docToUpdate); 
      } 
     } 
     scope.Complete(); 
    } 

這裏是錯誤

的ExecuteNonQuery需要一個開放和可用的連接。連接的當前狀態已關閉。

文檔是一個類,有保存和更新文檔方法。

If I comment the transactionScope, I get no errors. 

怎麼了?

+0

這是什麼數據庫?你的數據訪問代碼是什麼樣的(實際與DB對話的位)? –

+0

您需要在此處添加連接代碼。 – sikender

+0

你需要更好的框架似乎相同http://stackoverflow.com/questions/8305024/transactionscope-error-executenonquery-requires-an-open-and-available-connectio – V4Vendetta

回答

0

那麼,這很明顯是說這裏有什麼問題。你需要將你的訪問層放在外面或者在內部調用來使用連接。當它試圖在你的代碼中提交trans時,它會在到達之前處理。

using (TransactionScope scope = new TransactionScope()) 
{ 
    using (DataAccess.Document Access = new DataAccess.Document()) 
    { 
     if (toSave.Document.Rows.Count > 0) 
     { 
      Access.SaveDocument(docToSave); 
     } 
     if (toUpdate.Document.Rows.Count > 0) 
     { 
      Access.UpdateEachDocument(docToUpdate); 
     } 
     scope.Complete();  
    } 

}