Transactionscope or IDbTransaction

3

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

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

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

TransactionScope似乎更新……但它是否只应用于两阶段提交?

谢谢

3个回答

5

如果TransactionScope检测到只有一个连接,它将不会升级为分布式事务。这意味着对于本地事务,TransactionScope与BeginTransaction一样轻量级,但使用起来更加容易。


3
只要您在TransactionScope期间使用单个连接并不关闭和重新打开,它就不会升级为分布式事务。如果您的计算机上没有运行DTC服务,则如果尝试升级,它将抛出异常。如果DTC正在运行,除了稍微停顿一下,您将无法察觉到升级。请注意保留HTML标记。

3

在绝大多数情况下,TransactionScope 更易于使用,特别是与 "using" 块结合使用。

但是要小心,如果您使用 SQL Server 2000,则需要注意。它与 TransactionScope 不兼容,并且总是升级为分布式事务。

请参见此链接获取更多详细信息。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接