我想在一个事务中更新两个表单 View 。如果其中一个失败,另一个也应该失败。 Formviews 有自己的实体数据源。
button1_click(..........)
{
formview1.updateItem(true);
formview2.updateItem(true);
}
最佳答案
好吧,这可能不是世界上最简单的事情。
基本的答案是,是的,你可以做到。如果 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();
}
关于c# - 事务中的 EF 更新窗体 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11100399/