1

我有一個WinForm應用程序使用typed-dataset tabledapters查詢SqlCe數據庫。我有一個主窗體程序集和一個處理每個數據庫操作的數據庫程序集。我遇到了在事務中使用tableadapter更新的問題,我很感激任何人都可以給我任何想法。使用類型化數據集的TransactionScope

Update()方法給出了這樣的錯誤:

"The connection object can not be enlisted in transaction scope." 

這裏是我的代碼:

namespace Main 
{ 
    public class MainForm 
    { 
     private MyDbAssembly.MyDbClass db; 

     //instantiate and db fill methods omitted.. 

     private void DeleteStuff() 
     { 
      using (TransactionScope trans = new TransactionScope()) 
      { 
       this.db.Delete(id); 
       UpdateDb(); 

       trans.Complete(); 
      } 
     } 

     private void UpdateDb() 
     { 
      //bindingsource endedit & datagridview endedit methods omitted.. 
      this.db.Update(); 
     } 
    } 
} 

namespace MyDbAssembly 
{ 
    public class MyDbClass 
    { 
     private myTypedDataset myDataSet; 
     private myTypedDataSetTableAdapter.MyTable1Adapter table1Adapter; 

     //instantiate methods omitted.. 

     public void Delete(Guid id) 
     { 
      this.myDataSet.MyTable1.FindByID(id).Delete(); 
     } 

     public void Update() 
     { 
      this.table1Adapter.Update(myDataSet.MyTable); //<-- ERROR LINE 
     } 
    } 
} 
+0

你不是問過這個嗎? http://stackoverflow.com/questions/602421 – 2009-06-26 22:20:22

回答

1

因爲你創建的TransactionScope的跨範圍之外table1Adapter。

相關問題