Как настроить транзакции в Entity Framework? - PullRequest
4 голосов
/ 26 марта 2011

Как настроить транзакции в Entity Framework 4? В простом старом Ado.Net у нас был класс с именем SqlTransaction, мы также могли указать уровень изоляции для этой транзакции, такой как Read_Committed, Read_UnCommitted и т. Д. Я не могу найти все эти опции в Entity Framework. Как мы можем их настроить?

1 Ответ

6 голосов
/ 26 марта 2011

Вы можете использовать класс TransactionScope и установить уровень изоляции с помощью Опции транзакции , как описано здесь :

перегруженные конструкторы TransactionScope принимают структуру типа TransactionOptions для указания уровня изоляции в дополнение к значению тайм-аута.По умолчанию транзакция выполняется с уровнем изоляции, установленным в Serializable.Выбор уровня изоляции, отличного от Serializable, обычно используется в системах с интенсивным чтением.Это требует глубокого понимания теории обработки транзакций и семантики самой транзакции, связанных с этим проблем параллелизма и последствий для согласованности системы.

Например:

using (var context = new EFTestEntities())
{
    context.AddToProducts(new Product { Name = "Widget" });
    context.AddToProducts(new Product { Name = "Chotchky" });

    TransactionOptions options = new TransactionOptions { IsolationLevel = System.Transactions.IsolationLevel.ReadCommitted, Timeout = TransactionManager.DefaultTimeout };

    using (var scope = new TransactionScope(TransactionScopeOption.RequiresNew, options))
    {
        // do any EF work that you want to be performed in the transaction
        context.SaveChanges();

        // commit the transaction
        scope.Complete(); 
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...