2012-06-19 35 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(); 
}