Ошибка TransactionScope в.NET? Дополнительная информация?
Я читал (или, возможно, слышал от коллеги), что в.NET TransactionScope может установить тайм-аут, а затем VoteCommit (в отличие от VoteRollback). Это точно или слухи? Я не мог отследить информацию в Интернете, в которой говорилось об этой проблеме (если это проблема), поэтому мне интересно, есть ли у кого-нибудь прямой опыт с этим и может пролить свет?
2 ответа
Если вы имеете в виду в отношении SQL Server, то есть проблема, которую вы можете исправить в строке подключения; см. мой ответ здесь или полную информацию здесь.
Короткая версия: убедитесь, что у вас есть Transaction Binding=Explicit Unbind;
в строке подключения.
На самом деле это не фиксация голосования - транзакция (и любые ранние операции) откатились, но любые последующие операции (все еще внутри TransactionScope
) может выполняться в nul-транзакции, то есть в авто-фиксации.
Поведение, описанное Марком Гравеллом, было изменено в.Net 4.0. Вместо автоматически выполняемой операции теперь будет выдано исключение InvalidOperationException. Так что в 4.0 вам больше не нужно использовать Explicit Unbind.