【问题标题】:Transactionscope or IDbTransaction事务范围或 IDbTransaction
【发布时间】:2010-10-15 05:19:39
【问题描述】:

编辑:我只访问 1 个数据库,但正在创建 DTC 事务。我可以在 DTC 事务列表 GUI(组件服务插件)中看到它。这是为什么呢?

我需要对 1 个数据库执行事务(几个插入命令)。

我应该使用 TransactionScope 还是 IDbTransaction (connection.BeginTransaction)?

TransactionScope 似乎更新了……但它应该只用于两阶段提交吗?

谢谢

【问题讨论】:

    标签: c# .net ado.net


    【解决方案1】:

    在绝大多数情况下,TransactionScope 更易于使用,尤其是与“使用”块结合使用时。

    但是,如果您使用 SQL Server 2000,请小心。它不能很好地与 TransactionScope 配合使用,并且总是会升级为分布式事务。

    有关详细信息,请参阅this link

    【讨论】:

      【解决方案2】:

      只要您使用单个连接并且在 TransactionScope 期间不关闭并重新打开,它就不应升级为分布式事务。如果您的机器上没有运行 DTC 服务,它会在尝试提升时抛出异常。如果 DTC 正在运行,除了稍作停顿之外,您将不会更明智地进行促销。

      【讨论】:

        【解决方案3】:

        TransactionScope 仅在检测到多个连接时才会升级为分布式事务。这意味着对于本地事务,TransactionScope 与 BeginTransaction 一样轻量级,并且 TransactionScope 更易于使用。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-11-29
          相关资源
          最近更新 更多