我正在处理来自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时,它可以工作。