Ошибка TransactionScope в .NET? Больше информации?

Я прочитал (или, возможно, слышал от коллеги), что в .NET TransactionScope может поразить свой тайм-аут, а затем VoteCommit (в отличие от VoteRollback). Это точная или слуха? Я не мог отследить информацию в Интернете, которая говорила об этой проблеме (если это проблема), поэтому я задаюсь вопросом, есть ли у кого-то какое-либо непосредственное отношение к ней и может ли пролить некоторый свет?

Ответ 1

Если вы имеете в виду в отношении SQL Server, то есть проблема, которую вы можете исправить в строке подключения; см. мой ответ здесь или полную информацию здесь.

Краткая версия: убедитесь, что в строке подключения есть Transaction Binding=Explicit Unbind;.

Он фактически не выполняет фиксацию голоса - транзакция (и любые предыдущие операции) откат, но любые последующие операции (все еще внутри TransactionScope) могут выполняться в nul-транзакции, то есть автоматически фиксировать.

Ответ 2

Поведение, описанное Марк Гравелл, было изменено в .Net 4.0. Вместо того, чтобы операция была автоматической, она теперь выдает исключение InvalidOperationException. Таким образом, в 4.0 вам больше не нужно использовать Explicit Unbind.