c# - 事务中的 EF 更新窗体 View

标签 c# asp.net entity-framework transactions

我想在一个事务中更新两个表单 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/

相关文章:

c# - 使用事件处理程序传递附加参数或对象

c# - 如何禁用 OpenFileDialog 自动打开文件?

c# - 重写文本时不保留非英文字符

c# - 如何在具有多个域的 ASP.NET MVC4 应用程序中允许 Windows 身份验证?

c# - 使用具有单个 DbContext 和 Entites 的多个数据库并在运行时生成 Conn String

c# - 在 C# 中传递 List<int> 的问题

c# - Web 应用程序项目 - 如何使用 ProfileCommon

c# - 根据字典查找查询填充字符串

c# - Entity Framework 只读集合

c# - teamcity 无法构建,因为它缺少 Microsoft.WebDeployment.targets