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

c# entity-framework entity-framework-6 transactions transactionscope

Вопрос

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

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

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

Принятый ответ

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

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



Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему