Просматривая различные ресурсы, я наткнулся на следующее, что частично отвечает на мой вопрос: Работа с транзакциями в EF 6
На основе этой документации (которая в основном основана на EF, но с ограничениями) похоже, применимо в любом случае):
Все еще существуют некоторые ограничения для подхода TransactionScope :
Требуется. NET 4.5.1 или более для работы с асинхронные методы.
- Его нельзя использовать в облачном сценарии ios, если вы не уверены, что у вас одно и только одно соединение (облачный сценарий ios не поддерживает распределенные транзакции).
- Его нельзя комбинировать с подходом Database.UseTransaction () из предыдущих разделов.
- Он будет выдавать исключения, если вы выдадите какой-либо DDL и не включите распределенные транзакции через службу MSDT C.
Преимущества подхода TransactionScope:
- Он автоматически обновит локальную транзакцию к распределенной транзакции, если вы делаете более одного подключения к определенной базе данных или объединяете подключение к одной базе данных с подключением к другой базе данных в рамках одной транзакции (примечание: у вас должна быть настроена служба MSDT C, разрешающая распределенные транзакции чтобы это работало).
- Простота кодирования. Если вы предпочитаете, чтобы транзакция была фоновой и выполнялась неявно в фоновом режиме, а не явно под вашим контролем, то подход TransactionScope может вам подойти лучше.
Поскольку первая статья больше не является поддерживается и статья EF 6 новее + комментарий @MarcGravell, я предполагаю, что решение сводится к преимуществам и недостаткам статьи EF 6 выше.