База данных.Операции BeginTransaction против.класс TransactionScope
В чем разница между System.Transactions.TransactionScope
и ef6 это Database.BeginTransaction
?
может ли кто-нибудь дать небольшой пример или просто объяснить, какой из них использовать, когда с явной разницей?
P. S: в моем проекте я использую EF6. Я уже читал документацию, но это не помогало. Также посмотрел примеры, но они, скорее, используя SqlConnection.BeginTransaction
и теперь MS представила этот новый Database.BeginTransaction
в EF6.
1 ответ:
я нашел ответ в документации 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
подход, рекомендуется проверить его ограничения, особенно в облачных сценариях (облачные сценарии не поддерживают распределенные транзакции).дополнительная информация здесь