保存失败时,EF5 Auto是否回滚

时间:2013-11-30 19:18:06

标签: entity-framework-5

这是我第一次使用EF。

我想知道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 个答案:

答案 0 :(得分:1)

DbContext.SaveChanges()的调用存在隐式事务,因此在单个DbContext.SaveChanges()调用期间执行的任何操作将引发异常将回滚。如果您拨打DbContext.SaveChanges()两次并且第二次通话导致异常,则第一次SaveChanges()来电的更改将不会回滚