2011-05-18 59 views
1

我有一個名爲People的表格的類型化數據集。當您調用表適配器的更新方法並傳入表時,它是否作爲事務運行?在我輸入的數據集中,Update方法是否作爲事務運行?

我擔心在某些時候xsd中設置的約束會通過,但數據庫會因爲某種原因拒絕這個項目。我想確保整個更新被拒絕,並且我不確定它只是接受它可以發生的錯誤。

如果它會作爲一個交易我有這個

Auth_TestDataSetTableAdapters.PeopleTableAdapter tableAdapter = new Auth_TestDataSetTableAdapters.PeopleTableAdapter(); 
Auth_TestDataSet.PeopleDataTable table = tableAdapter.GetDataByID(1); 

table.AddPeopleRow("Test Item", 5.015); 
tableAdapter.Update(table); 

但如果我必須手動捕獲該事務中的我風與此

Auth_TestDataSetTableAdapters.PeopleTableAdapter tableAdapter = new Auth_TestDataSetTableAdapters.PeopleTableAdapter(); 
Auth_TestDataSet.PeopleDataTable table = tableAdapter.GetDataByID(1); 

tableAdapter.Connection.Open(); 
tableAdapter.Transaction = tableAdapter.Connection.BeginTransaction(); 

table.AddPeopleRow("Test Item", 5.015); 

try 
{ 
    tableAdapter.Update(table); 
    tableAdapter.Transaction.Commit(); 
} 
catch 
{ 
    tableAdapter.Transaction.Rollback(); 
} 
finally 
{ 
    tableAdapter.Connection.Close(); 
} 

兩種方法都可行,但我很感興趣在內部工作。我決定處理這種類型的行添加的方式還有其他問題嗎?

- 編輯 -

決定了它不會作爲交易工作,將致力於然而,許多記錄是成功的,直到發生錯誤。由於有用的帖子下面有一些事務代碼已被濃縮,使得交易控制更容易:

Auth_TestDataSetTableAdapters.PeopleTableAdapter tableAdapter = new Auth_TestDataSetTableAdapters.PeopleTableAdapter(); 
Auth_TestDataSet.PeopleDataTable table = tableAdapter.GetDataByID(1); 

try 
{ 
    using (TransactionScope ts = new TransactionScope()) 
    { 
     table.AddPeopleRow("Test Item", (decimal)5.015); 
     table.AddPeopleRow("Test Item", (decimal)50.015); 
     tableAdapter.Update(table); 

     ts.Complete(); 
    } 
} 
catch (SqlException ex) 
{ /* ... */ } 

回答

3

您的方法應該可行。

您可以簡化它雖然有點:

using (TransactionScope ts = new TransactionScope()) 
{ 
    // your old code here 
    ts.Complete(); 
} 
+0

剛剛意識到,爲什麼它不工作,除了4.0。忘了提及我在3.5 SP1上。好東西,但希望我可以使用它。 – Mohgeroth 2011-05-18 03:05:38

+0

@Mohgeroth - 這不是新的。從2.0開始已經有了 - http://msdn.microsoft.com/en-us/library/system.transactions.transactionscope%28v=VS.80%29.aspx – 2011-05-18 03:09:07

+0

現在我明白了,我不得不手動添加一個引用。首先搜索說4.0,所以我認爲,我的壞。非常棒的小部件來簡化所有這些額外的代碼! – Mohgeroth 2011-05-18 03:10:29

相關問題