c# - 使用 C# SQL Server 调用在 "Using"范围内自动回滚吗?

标签 c# sql transactions using rollback

当您为 SQL 连接、事务和命令创建“using” block 时,众所周知,与 using block 关联的连接、事务或命令在您离开 using 后会自行正确处理堵塞。

如果在这些 block 之一中发生异常,例如在命令 block 中 - 事务是否会自行回滚,或者开发人员是否需要在命令“using” block 中执行 try catch,以及为这次try在catch中添加回滚事务语句?

最佳答案

只要您没有成功调用 Commit,事务就会自动回滚。所以你的 using block 可以看起来像这样,如果在 Commit 之前抛出异常,事务将被回滚。

using (IDbConnection connection = ...)
{
    connection.Open();
    using (IDbTransaction transaction = connection.BeginTransaction())
    {
        using (IDbCommand command = ...)
        {
            command.Connection = connection;
            command.Transaction = transaction;
            ...
        }
        ...
        transaction.Commit();
    }
}

关于c# - 使用 C# SQL Server 调用在 "Using"范围内自动回滚吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18388852/

相关文章:

c# - 为什么 MVC 5 不调用我的 VirtualPathProvider 类的 GetFile 方法?

c# - 继承数据库的最佳方式

sql - 有效地随机化(洗牌)Sql Server 表中的数据

nhibernate - 正确使用NHibernate工作单元模式和Ninject

java - 意外回滚异常 : Transaction rolled back because it has been marked as rollback-only

c# - Microsoft Surface 中的文件选择器

c# - 将文本中的单词与列表框中的项目进行比较

php - 如何加速 codeigniter/php 分页,sql 查询

php - '大于或等于'和 'less than or equal' CODEIGNITER

java - HBase 中事务的模拟