这是我第一次使用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();
}
我在网上看到很多代码显示在事务中运行代码,所以我对自动回滚有点怀疑。
答案 0 :(得分:1)
对DbContext.SaveChanges()
的调用存在隐式事务,因此在单个DbContext.SaveChanges()
调用期间执行的任何操作将引发异常将回滚。如果您拨打DbContext.SaveChanges()
两次并且第二次通话导致异常,则第一次SaveChanges()
来电的更改将不会回滚