Я нашел ответ в документации 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
подход, рекомендуется ознакомиться с его ограничениями, особенно в облачных сценариях (облачные сценарии не поддерживают распределенные транзакции).
Дополнительную информацию можно найти здесь