Entity Framework 4.1, DBContext, как повторно использовать транзакции среди соединений - PullRequest
1 голос
/ 03 января 2012

Есть ли способ повторно использовать транзакцию между различными подключениями, не возвращаясь к DTC?Я не могу понять, как это сделать.

using (TransactionScope ...
{
    using (var db1 = new modelXEntities())
    {
        db1.Database.Connection.EnlistTransaction(Transaction.Current); ???   
        db1.SaveChanges(); ==>error

        using (var db2 = new modelYEntities())
        {
            db2.Database.Connection.EnlistTransaction(Transaction.Current); ???    
            db2.SaveChanges(); ==>error

Ошибка: основной поставщик не удалось открыть ...

Спасибо.

1 Ответ

1 голос
/ 03 января 2012

Если вы хотите иметь одну транзакцию для нескольких соединений, вы должны использовать распределенную транзакцию = MSDTC.Причина в том, что для координации транзакций между несколькими транзакционными ресурсами требуется специальная обработка (двухфазная фиксация).Все транзакционные ресурсы должны взаимодействовать с отдельным процессом, координирующим транзакцию.Это то, что предоставляет MSDTC (координатор распределенных транзакций MS).

...