У меня есть следующий код, который выполняет фиксацию одной строки в таблице базы данных (SQL 2008/.NET 4)
using (var db = new MyDbDataContext(_dbConnectionString))
{
Action action = new Action();
db.Actions.InsertOnSubmit(dbAction);
db.SubmitChanges();
}
Обычно все нормально, но время от времени я получаю следующее исключение:
System.InvalidOperationException: This SqlTransaction has completed; it is no longer usable.
at System.Data.SqlClient.SqlTransaction.ZombieCheck()
at System.Data.SqlClient.SqlTransaction.Rollback()
at System.Data.Linq.DataContext.SubmitChanges(ConflictMode failureMode)
На SO есть ряд похожих вопросов, но после их чтения я не могу решить причину.
Может ли это быть просто из-за таймаута SQL (исключение происходит близко к 25 секундам после вызова)? Или я должен ожидать исключения тайм-аута SQL в этом случае?
Кто-нибудь знает, что еще может вызвать это?