Подтвердить что ты не робот

База данных .BeginTransaction vs Transactions.TransactionScope

В чем разница между System.Transactions.TransactionScope и EF6 Database.BeginTransaction?

Может ли кто-нибудь дать небольшой пример или просто объяснить, какой из них использовать, когда с явной разницей?

P.S: В моем проекте я использую EF6. Я уже прочитал документацию, но это мало помогло. Также просмотрели примеры, но они скорее используют SqlConnection.BeginTransaction, и теперь MS представила этот новый Database.BeginTransaction в EF6.

4b9b3361

Ответ 1

Я нашел ответ в документации Entity Framework 6:

С введением EF6 Microsoft рекомендует использовать новые методы API: Database.BeginTransaction() и Database.UseTransaction(). Хотя System.Transactions.TransactionScope по-прежнему очень хорошо поддерживается, для большинства пользователей EF6 он больше не нужен .

В то время как Database.BeginTransaction() используется только для транзакций операций с базой данных, System.Transactions.TransactionScope, в дополнение к этому, делает возможным, чтобы "простой код С#" также был транзакционным.

Следовательно, используйте Database.BeginTransaction(), где когда-либо выполняли только операции, связанные с db в транзакции в EF6, в противном случае используйте System.Transactions.TransactionScope для смешивания операций db и кода С# вместе в транзакции.

Для тех, кто по-прежнему предпочитает подход TransactionScope, рекомендуется проверить его ограничения, особенно в облачных сценариях (облачные сценарии не поддерживают распределенные транзакции).

Дополнительную информацию можно найти здесь