如果一个操作失败,则回滚
本文关键字:失败 操作 一个 如果 | 更新日期: 2023-09-27 17:56:44
我在这里没有找到关于如果一组操作中的一个操作失败,如何在 sql 服务器上回滚以前的操作的具体帖子。
例如,我有一个查询来带来一些数据,我用context.saveChanges()
添加一行,然后也许执行第二次和第三次插入。
好的,最后一个插入失败了,所以我想让 db 状态恢复到三个插入之前的状态。
我正在使用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();
}
}
好吧,什么都不做。SaveChanges 已在内部使用了事务。它是原子的 - 更改是否保存。