Дозвуковой: использование SharedDbConnectionScope вместе с TransactionScope не работает - PullRequest
3 голосов
/ 07 августа 2009

Используя приведенный ниже код, ожидаемое поведение состоит в том, что база данных не будет отражать обновление, поскольку ts.Complete () никогда не вызывается, но обновления, похоже, проходят. Но если я опущу SharedDbConnectionScope, то увидим ожидаемое поведение. Есть ли проблема с SharedDbConnectionScope? Кстати, я использую Subsonic 2.2

using (SharedDbConnectionScope sharedConnectionScope = new SharedDbConnectionScope())           
{
    using (TransactionScope ts = new TransactionScope())
    {                
        // update here
    }
}

Ответы [ 2 ]

3 голосов
/ 07 августа 2009

Обнаружил проблему. Документы на Subsonic, похоже, неверны. Если я оберну TransactionScope поверх SharedDbConnectionScope, то он будет работать нормально. Правильный путь должен быть:

using (TransactionScope ts = new TransactionScope())
{
    using (SharedDbConnectionScope sharedConnectionScope = new SharedDbConnectionScope())           
    {
            // update here
    }
}

Редактировать: Как упоминалось Firestorm, SharedDbConnectionScope, похоже, не работает в Subsonic 2.2. Таким образом, похоже, единственное решение - установить MsDts и не использовать SharedDbConnectionScope.

0 голосов
/ 08 августа 2009

Я не думаю, что SharedDbConnectionScope вообще работает в Subsonic 2.2. Насколько я могу судить по объекту, вся идея в том, что при его использовании вам не нужно устанавливать MsDts на сервере. Я не мог заставить это работать вообще! Когда вы устанавливаете MsDts, вам больше не нужен SharedDbConnectionScope, поэтому ваш код работает, когда он создается после TransactionScope.

...