c# - 如果一项操作失败则回滚

标签 c# sql-server asp.net-mvc entity-framework

我在这里没有找到关于如何在一组操作中的一个操作失败时回滚 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/

相关文章:

c# - 如何自定义 AutoFixture 有时会返回 Null

c# - 如何将@RenderBody() 分成两部分

asp.net-mvc - "test"服务器中的 ASP.NET MVC 运行时安装要求

c# - 在 MVC 中获取响应内容

c# - 将 JSON 数据传递给 REST POST 方法

c# - 将点对象添加到 ZedGraph

c# - 使用具有最大值的 FluentFTP 从 FTP 同时下载多个文件

sql-server - 使用 SELECT 语句分配变量

java - Android Studio 中与 Azure 的 JDBC 连接失败

sql - 删除重复记录保留原始记录