2016-10-26 10 views
2

Я над проектом с использованием Entity Framework 6 для доступа к базам данных на SQL Server 2012.Откат на Entity Framework 6

У нас есть ожидающее обсуждение в нашей команде относительно состояния контекста дб после отката. Непонятно, что на базу данных не повлияли изменения транзакции после выполнения отката. Но как насчет контекста?

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

Может кто-нибудь убить эту утку, чтобы мы могли закрыть обсуждение. Я получил высокий и низкий уровень для четкого ответа, не найдя его.

Я был бы очень разочарован тем, что ошибался в своем предположении, что контекст откат, а также изменения базы данных. Это означало бы, что мы должны прекратить итерацию с помощью набора комплексных обновлений, отбросить контекст и начать заново в случае откат одного из обновлений.

ответ

3

Ничего не случится с context. Вы можете использовать его даже после откат. Только изменения базы данных будут отброшены назад, и DbContextTransaction должен быть удален после того, как он был зафиксирован или откат.

Вы можете использовать последний транзакционный API EF 6, как показано ниже.

using (var context = new YourContext()) 
      { 
       using (var dbContextTransaction = context.Database.BeginTransaction()) 
       { 
        try 
        { 
         //your db operations 

         context.SaveChanges(); 

         dbContextTransaction.Commit(); 
        } 
        catch (Exception) 
        { 
         dbContextTransaction.Rollback(); 
        } 
       } 
      } 

Вы можете прочитать об этом здесь: Entity Framework Working with Transactions

+0

Я до сих пор не уверен в consequeses этого. После отката контекст не синхронизируется с базой данных. Что произойдет в следующий раз, когда SaveChanges и Commit будут выполняться в этом контексте? Будут ли возвращенные записи обратно в базу данных. Иными словами, будет ли Контекст небезопасным работать после Rolback? –

+0

Вы можете использовать «контекст» после откат. Другими словами, «контекст» безопасен для использования любой другой цели, поэтому откат назад не делает ничего для «контекста». Он влияет только на 'dbContextTransaction' и, конечно же, записи базы данных. – Sampath

+0

любая обратная связь для этого? если это вам не поможет, скажите мне. Тогда я могу удалить этот пост. – Sampath

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