2011-12-12 52 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();  
    } 

}