Награда может помочь получить ответ, который вы ищете, но вы, вероятно, получите лучшие ответы, если дадите несколько примеров кода и дадите лучшее описание того, когда произошла ошибка.
Ошибка возникает только периодически? Похоже, это из вашего описания.
Включаете ли вы закрытие, которое вы хотите сделать, как транзакцию в блоке using TransactionScope
, как рекомендует Microsoft? Это должно помочь избежать странного поведения транзакции. Напомним, что блок using
гарантирует, что объект всегда находится вне зависимости от создаваемых исключений. Смотрите здесь: http://msdn.microsoft.com/en-us/library/ms172152.aspx
Если вы используете TransactionScope
, существует аргумент System.TransactionScopeOption.RequiresNew
, который указывает платформе всегда создавать новую транзакцию для этого блока кода:
Using ts As New Transactions.TransactionScope(Transactions.TransactionScopeOption.RequiresNew)
' Do Stuff
End Using
Кроме того, если вы подозреваете, что соединение обрывается и затем помещается обратно в пул соединений, вероятным решением является включение кода, который может вызвать сбой соединения, в блок Try-Catch и Dispose
соединение в блоке улова.