Я только начинаю работать с использованием TransactionScope, я нахожу, что всегда существуют неожиданные вещи, с которыми я сталкиваюсь, которые берут навсегда для отладки.
Я полагаю, что наличие объединенного списка их было бы большим для те "странная ошибка" обстоятельства, плюс развернуть наше знание нечетности в платформе.
Некоторый контекст о том, как я собираюсь быть областями транзакций использования:
Если вы используете SQL Server и отметите @@ trancount, он будет равен 0, даже если у вас есть активный TransactionScope.
Две вещи, которые не у меня в голове:
You want transactions to be lightweight as much as possible, dtc introduces a lot of overhead. You also want transactions to be as short as possible, so introduce them only on the application servers and not on the web server. Make the hop over the network between the application servers and the database as small as possible and as fast as possible, send network traffic between web and app servers over a different connection than between app servers and db, and make the last one a screaming fast, ridiculously short connection.
If you have multiple application servers, you could consider having a single instance of msdtc running on a server (e.g. on the database or on one of the app servers) and use this remotely from all application servers instead of each one running their own, but I don't know what additional benefits this has.
Также обратите внимание, что если вы измените какой-либо из своих объектов во время транзакции, то они не будут откатываться обратно, если вы не добавите код для работы с этим.