c# - 错误绑定(bind) Gridview : "The current TransactionScope is already complete"

标签 c# asp.net linq gridview transactionscope

我正在对从 Gridview 发送的事件进行级联删除。删除在事务中。这是简化的代码:

protected void btnDeleteUser_Click(object sender, EventArgs e)
{
    DataContext db;
    db = new DataContext();

    using (TransactionScope ts = new TransactionScope())
    {
        try
        {
            //delete some data
            db.SubmitChanges();

            ts.Complete();
        }
        catch (Exception ex)
        {
            // handle error
        }
        finally
        {
            db.Dispose();
            BindGridView();
        }
    }
}


private void BindGridView()
{
    DataContext db;

    db = new DataContext();

    GridView.DataSource = <my query>

    GridView.DataBind();     <========Exception

    db.Dispose();
}

调用网格的 DataBind() 方法失败,出现以下异常: “当前的 TransactionScope 已经完成。” 为什么?

当然,此时 TransactionScope 已经完成,而且应该完成。当我删除 TransactionScope 时,它​​会起作用。

最佳答案

将 BindGridView() 移到事务范围之外。

    using (TransactionScope ts = new TransactionScope())
    {
        try
        {
            //delete some data
            db.SubmitChanges();

            ts.Complete();
        }
        catch (Exception ex)
        {
            // handle error
        }
        finally
        {
            db.Dispose();
        }
    }
    BindGridView();

关于c# - 错误绑定(bind) Gridview : "The current TransactionScope is already complete",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1436577/

相关文章:

c# - C#-如何使用索引将字符串的一部分输出到控制台

c# - 字符串编码在数据库上失败

c# - asp.net MVC5 - 依赖注入(inject)和 AuthorizeAttribute

c# - TIBCO EMS 连接无法在 C# 中解析

javascript - 在 jQuery UI Datepicker 和 asp.net 日历上禁用自定义日期

c# - 无法从对象列表中检索属性

c# - HtmlGenericControl 和 id

asp.net - 测试以确定您的开发环境?

c# - 在 Linq 中检查两个日期是否相等的优雅解决方案(第二个日期不是参数)

c# - 如何从 Expression<Func<T>> 构建 Expression<Func<T,bool>>