我似乎无法就此找到明确的答案。我有一个SqlBulkCopy操作,它包含在TransactionScope中,并带有许多其他操作。
我知道SqlBulkCopy构造函数中允许传递SqlTransaction对象的重载。假设我没有在构造函数中传递事务,该命令是否会自动参与TransactionScope创建的环境事务?
答案 0 :(得分:5)
我已经完成了一些测试,看来SqlBulkCopy实际上确实尊重环境事务,至少在.Net 4.5中。
为了测试,我在调试时做了一个SqlBulkCopy操作,并验证了这些行是否已经进入数据库(通过NOLOCK / dirty读取查询)。然后我在下一行代码上抛出异常,并允许TransactionScope回滚。然后我验证了这些行不再存在于数据库中。