База данных.Операции BeginTransaction против.класс TransactionScope


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

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

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

1 59

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

дополнительная информация здесь