2013-11-30 2 views
0

Это мой первый раз с использованием EF.Автоматический откат EF5 при неудачном смене

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

Вот мой код

public Test() 
    { 
     InitializeComponent(); 
     //Gets Gets unit of work for a specific context 
     var s=DAL.DALHelper.GetUnitOfWork(); 

     var categoryRepo=s.GetRepository<Category>(); 
     var onlyRecord = s.GetRepository<Category>().GetById(3); 
     onlyRecord.CategoryDescription = "Test2222"; 

     Category catToAdd=new Category(); 
     catToAdd.CategoryDescription="Test3"; 
     catToAdd.CategoryName="Toys"; 
     //This will break due to a constraint 
     categoryRepo.Add(catToAdd); 
     s.Save(); 
    } 

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

ответ

1

Существует неявная транзакция для вызова DbContext.SaveChanges(), поэтому любые операции, выполняемые в течение одного вызова DbContext.SaveChanges(), который генерирует исключение, откатываются. Если вы вызываете DbContext.SaveChanges() дважды, а второй вызов вызывает исключение, изменения с первого вызова SaveChanges() не будут отменены.

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