我似乎找不到确切的答案。我有一个SqlBulkCopy操作,该操作与其他许多操作包装在TransactionScope中。

我知道SqlBulkCopy构造函数中的重载,该重载允许传递SqlTransaction对象。假设我没有在构造函数中传递事务,该命令是否会自动参与由TransactionScope创建的环境事务?

最佳答案

我已经进行了一些测试,并且看来SqlBulkCopy实际上确实支持环境事务,至少在.Net 4.5中如此。

为了进行测试,我在调试时执行了SqlBulkCopy操作,并验证了这些行已将其存储到数据库中(通过NOLOCK/脏读取查询)。然后,我在下一行代码中引发了一个异常,并允许TransactionScope回滚。然后,我确认行不再在数据库中。

关于c# - SqlBulkCopy是否参与环境事务?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31546877/

10-14 14:14