2013-05-31 4 views
3

Ошибка при запуске транзакции при подключении к провайдеру. Подробнее см. Внутреннее исключение. «Вложенные транзакции не поддерживаются». Inner ИсключениеВ Entity Framework 4.0 «Вложенные транзакции не поддерживаются» отображается ошибка?

public bool Insert(myModel model) 
{ 
      entities.Database.Connection.Open(); 
      using (DbTransaction trans = entities.Database.Connection.BeginTransaction()) 
      { 
       try 
       { 
        table1 obj1 = new table1 
        { 
         AccountHolderName = model.AccountHolderName, 
         AccountNumber = model.AccountNumber, 
         Address = model.Address, 
        }; 
        entities.table1.Add(obj1); 
        entities.SaveChanges(); 

        long id = obj1.ID; 

        table2 obj = new table2 
        { 
         ID = model.ID == 1 ? id : model.ID, 
         Username = model.Email, 
         Password = model.Password, 
        }; 
        entities.table2.Add(obj2); 
        entities.SaveChanges(); 
        trans.Commit(); 
       } 
       catch (Exception) 
       { 
        trans.Rollback(); 
       } 
       finally 
       { 
        entities.Database.Connection.Close(); 
       } 
      } 
} 

ответ

4

Возможно, это связано с использованием двух разных соединений, используемых в транзакции. Вы должны контролировать соединение вручную:

objectContext = ((IObjectContextAdapter)entities).ObjectContext; 
try{ 
    objectContext.Connection.Open(); 
    using (var tran = new TransactionScope()) { 
     table1 obj1 = new table1 
     { 
      AccountHolderName = model.AccountHolderName, 
      AccountNumber = model.AccountNumber, 
      Address = model.Address, 
     }; 
     entities.table1.Add(obj1); 
     entities.SaveChanges(); 

     table2 obj = new table2 
     { 
      ID = model.ID == 1 ? id : model.ID, 
      Username = model.Email, 
      Password = model.Password, 
     }; 
     entities.table2.Add(obj2); 
     entities.SaveChanges(); 

     tran.Complete(); 
    } 
} 
finally{ 
    objectContext.Connection.Close(); 
} 
+1

cool решил мою проблему .... thnx – faraaz

1

вы добавляете два объекта одновременно в одной и той же функции, так что вы получите ошибки данных объекта table1 и данные таблицы 2 объекта добавить в другом блоке.

+0

Цените свою помощь ... Я старался и не работал. какие-либо предложения. – faraaz

Смежные вопросы