Ошибка TransactionScope в .NET? Дополнительная информация? - PullRequest
23 голосов
/ 12 октября 2008

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

Ответы [ 2 ]

29 голосов
/ 20 августа 2010

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

26 голосов
/ 12 октября 2008

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

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

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

...