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