Transactionscope或IDbTransaction

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

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

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

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

谢谢

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

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

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

但是,如果使用SQL Server 2000,请注意它。它与TransactionScope不兼容,并且将始终升级到分布式事务。

有关详细信息,请参阅此链接 。