TransactionScope, не откатывающий транзакцию

Этот тип ситуации обрабатывается обещанием с выполнено . Согласно документу:

Обещание: вернуть объект Promise, чтобы наблюдать, когда все действия определенного типа, связанные с коллекцией, поставленные в очередь или нет, завершены.

Готово: добавить обработчики, которые будут вызываться при разрешении отложенного объекта.

blockquote>
.animate('Your-Selectot')
.promise()
.done(function () {
    $(this).css('backgroud-color', 'blue'); // Its only sample to describe situation. 
});

done обратный вызов вызывается после того, как коллекция очистит свои очереди.

12
задан Michael Kniskern 4 December 2008 в 16:31
поделиться

4 ответа

Похоже на ловлю исключения в Insert3 (), таким образом, код продолжается после вызова. Если Вы захотите, чтобы это откатывало, то необходимо будет позволить пузырю исключения до блока попытки/выгоды в основной стандартной программе так, чтобы ts. Завершенный () оператор никогда не называют.

6
ответ дан 2 December 2019 в 04:34
поделиться

Я также столкнулся с подобной проблемой. Моя проблема произошла, потому что SqlConnection, который я использовал в своем SqlCommands, был уже открыт, прежде чем TransactionScope был создан, таким образом, это никогда не включалось в список в TransactionScope как транзакция.

Действительно ли возможно, что класс SqlHelper снова использует экземпляр SqlConnection, который открыт перед вводом блока TransactionScope?

25
ответ дан 2 December 2019 в 04:34
поделиться

Неявный откат только произойдет, если из использования выйдут, не звоня ts.complete. Поскольку Вы обрабатываете исключение в Insert3 (), исключение никогда не заставляет оператор использования выходить.

Или повторно бросьте исключение или уведомьте вызывающую сторону, что откат необходим (делайте изменение подписью Insert3 () к bool Insert3 ()?)

1
ответ дан 2 December 2019 в 04:34
поделиться

(на основе отредактированной версии, которая не глотает исключения),

Сколько времени операции берут? Если какой-либо из них очень долго работает, возможно, что Транзакция, Обязательная функция ошибки укусила Вас - т.е. соединение, стала отдельной. Попытайтесь добавить Transaction Binding=Explicit Unbind к строке подключения.

1
ответ дан 2 December 2019 в 04:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: