我可以使用SqlBulkCopy在事务

本文关键字:事务 SqlBulkCopy 可以使 我可以 | 更新日期: 2023-09-27 18:18:54

TransactionScope中使用SqlBulkCopy安全吗?我知道这个问题,但它并没有回答这个问题,而且它很老。如果不可能,有什么好的选择?

我可以使用SqlBulkCopy在事务

如果TransactionScopeSqlBulkCopy使用的sql连接创建和打开之前创建,则使用TransactionScope的事务处理机制。这意味着您需要手动创建自己的SqlConnection并打开它,以便稍后用于SqlBulkCopy实例。

using (var ts = new TransactionScope())
using (var sqlCon = new SqlConnection(conStr))
{
  sqlCon.Open(); // ensure to open it before SqlBulkCopy can open it in another transactionscope.
  using (var bulk = new SqlBulkCopy(sqlCon))
  {
    // Do you stuff
    bulk.WriteToServer...
  }      
  ts.Complete(); // finish the transaction, ie commit
}

注1 :在阅读了TransactionScope vs SqlTransaction之后,大量更改了答案

注2 :这个答案纯粹来自阅读,到目前为止我还没有以上的经验证据。

注意3 :自从我第一次回复之后,你提到的问题似乎有了新的答案,他给出的答案和我在这里做的一样,所以我希望他有经验证据:)(即https://stackoverflow.com/a/33311494/691294)