如何在 C# 中回滚查询?

Posted

技术标签:

【中文标题】如何在 C# 中回滚查询?【英文标题】:How to roll back queries in C#? 【发布时间】:2016-12-28 12:54:30 【问题描述】:

我有删除查询列表,我使用以下代码执行它们:

using (var ctx = new ApplicationDbContext(schemaName))

    foreach (var item in queries)
    
        ctx.Database.ExecuteSqlCommand(item);
    

我想提交所有删除查询,但如果任何查询出现错误,我想回滚。

上述场景如何回滚?

【问题讨论】:

相关/可能重复:Entity Framework 6 transaction rollback 您可能正在寻找的关键字是“交易”。我已经链接了一个可能解决您问题的潜在问题。 【参考方案1】:

尝试使用 TransactionScope

using System.Transactions;

try

    using (var scope = new TransactionScope())
    
        using (var ctx = new ApplicationDbContext(schemaName))
        
            foreach (var item in queries)
            
                ctx.Database.ExecuteSqlCommand(item);
            
        
        scope.Complete();
    

catch (Exception ex)



【讨论】:

得到编译器错误 - 'System.Activities.Statements.TransactionScope': type used in a using statement must be implicitly convertible to 'System.IDisposable' 使用 System.Transactions 命名空间中的 TransactionScope: Object in Catch语句有错误需要Dispose吗? @Anup 不需要在 catchfinally 块中调用 Dispose。当程序退出 using 时,它会调用 Dispose

以上是关于如何在 C# 中回滚查询?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 SQL Server 中回滚或提交事务

如何在 PostgreSQL 中回滚更新

如何检测用户是不是在 UIScrollView 中回滚了一个视图?

如何在 googleplay 中回滚 apk 版本? [复制]

在 PyMySQL 中回滚多个查询

如何在循环中回滚到下一次迭代?