Обнаружил проблему. Документы на Subsonic, похоже, неверны. Если я оберну TransactionScope поверх SharedDbConnectionScope, то он будет работать нормально. Правильный путь должен быть:
using (TransactionScope ts = new TransactionScope())
{
using (SharedDbConnectionScope sharedConnectionScope = new SharedDbConnectionScope())
{
// update here
}
}
Редактировать: Как упоминалось Firestorm, SharedDbConnectionScope, похоже, не работает в Subsonic 2.2. Таким образом, похоже, единственное решение - установить MsDts и не использовать SharedDbConnectionScope.