9
Я делаю каскадные удаления в событии, отправленном из Gridview. Удаления находятся в транзакции. Вот упрощенный код:Ошибка привязки Gridview: «Текущий TransactionScope уже завершен»
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, он работает.
спасибо, что было легко. – cdonner
Спасибо. Это помогло решить проблему, с которой я столкнулся. Однако я не уверен, почему это происходит. – Phil
@Phil: GridView привязан после совершения транзакции, но пока он все еще находится в рамках транзакции. В сообщении об ошибке говорится: «Вы помещаете это в транзакцию, но я не могу ее выполнить, потому что вы уже совершили транзакцию». Поскольку транзакция не требуется для привязки GridView, имеет смысл просто изолировать ее от области транзакции. –