Я нашел ответ в документации Entity Framework 6:
С введением EF6 Microsoft рекомендует использовать новые методы API: Database.BeginTransaction()и Database.UseTransaction(). Хотя System.Transactions.TransactionScopeон по-прежнему очень хорошо поддерживается, большинству пользователей EF6 он больше не нужен .
Хотя Database.BeginTransaction()используется только для транзакций, связанных с базой данных System.Transactions.TransactionScope, в дополнение к этому, «простой код C #» также может быть транзакционным.
Следовательно, используйте Database.BeginTransaction()там , где когда-либо выполнялись только операции, связанные с базой данных, в транзакции в EF6, в противном случае используйте System.Transactions.TransactionScopeдля смешивания операций базы данных и кода C # вместе в транзакции.
Тем, кто все еще предпочитает этот TransactionScopeподход, рекомендуется ознакомиться с его ограничениями, особенно в облачных сценариях (облачные сценарии не поддерживают распределенные транзакции).
Дополнительную информацию можно найти здесь