Transactionscope或IDbTransaction

时间:2009-03-24 14:08:43

标签: c# .net ado.net

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

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

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

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

由于

3 个答案:

答案 0 :(得分:4)

如果TransactionScope检测到多个连接,它将仅升级到分布式事务。这意味着TransactionScope与本地事务的BeginTransaction一样轻量级,而TransactionScope更容易使用。

答案 1 :(得分:3)

只要您使用单个连接并且在TransactionScope期间不关闭并重新打开,它就不应该升级到分布式事务。如果您的计算机上没有运行DTC服务,它会在尝试升级时抛出异常。如果DTC正在运行,除了稍微停顿之外,您将不再是促销活动的明智之处。

答案 2 :(得分:3)

在绝大多数情况下,TransactionScope使用得更好,特别是与“使用”块一起使用。

但是,如果使用SQL Server 2000,请注意。它不能与TransactionScope一起使用,并且总是会升级到分布式事务。

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