2012-06-19 38 views
4

我想更新交易中的兩個視圖。如果其中一個失敗,另一個也會失敗。 Formviews擁有自己的實體數據源。EF更新交易中的視圖

button1_click(..........) 
{ 
    formview1.updateItem(true); 
    formview2.updateItem(true); 
} 

回答

2

好吧,這可能不是世界上最簡單的東西。

基本的答案是,你可以做到。如果updateItem方法打開數據庫連接,代碼將與此類似。

using (TransactionScope scope = new TransactionScope()) 
{ 
    formview1.updateItem(true); 
    formview2.updateItem(true); 
    scope.Complete(); 
} 

如果在另一方面的連接已經由的updateItem被稱爲然後同時打開你需要做更多的東西一樣

using (TransactionScope scope = new TransactionScope()) 
{ 
    formview1.Connection.EnlistTransaction(Transcation.Current); 
    formview2.Connection.EnlistTransaction(Transcation.Current); 
    formview1.updateItem(true); 
    formview2.updateItem(true); 
    scope.Complete(); 
}