我在这里没有找到关于如何在一组操作中的一个操作失败时回滚 sql server 上的先前操作的具体帖子。
例如,我有一个查询来带来一些数据,我使用 context.saveChanges()
添加一行,然后可能执行第二次和第三次插入。
好吧,最后一次插入失败,所以我想将数据库状态恢复到三次插入之前的状态。
我使用 EF4 和 SQL Server 2008 R2 + Asp Net MVC 4/C#。
交易是唯一的方法吗?
由于这些操作已被一一保存(以编程方式),而不是仅保存在一个 context.saveChange()
中,因此我不确定如何执行回滚。
最佳答案
您可以使用 TransactionScope 执行“嵌套事务”。
将你的逻辑包裹起来
using (var transScope = new TransactionScope())
{
//add something
context.SaveChanges();
//do something else
context.SaveChanges();
if (foo == bar) //check that it worked fine
{
transScope.Commit();
}
}
关于c# - 如果一项操作失败则回滚,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14625331/