Вещи оказались совершенно несовместимые.
При изучении TransactionScope выяснилось, что если в процессе обработки транзакции начинается еще одна транзакция в том же процессе (но например в соседнем потоке), то создается распределенная транзакция и дальше, учитывая что страниц будет открываться сразу и много - получается совершенная каша с фиксацией в непонятный момент времени. Кроме того чтобы это заработало нужно сначала помудрить с правилами разрешения и настройками сервера.
Самое плохое, что сначала всё хорошо, проблемы начинаются через несколько минут работы сайта, потому сразу не понятно помогло найденное лекарство или нет.
На данный момент пришел к выводу, что оно того не стоит - проще в начале страницы транзакцию запускать и в конце завершать без всяких оберток вручную.
Подписаться на:
Комментарии к сообщению (Atom)
Мне кажется, Вы не совсем правы. TransactionScope скорее завязан на коннекшен к базе, а не на поток. Поэтому если в каждом потоке использовать свой коннекшен (что по идее более правильно), то таких проблем возникать не должно.
ОтветитьУдалитьКогда на эту особенность наткнулся Каждый TransactionScope создавался для собственный connection - была сделана aspx-страница, которая в начале работы открывала соединение, по завершении - делала коммит транзакции. Или что-то похожее.
ОтветитьУдалитьПроблема начала проявляться при обработке нескольких запросов одновременно.