我可以在Transaction中使用SqlBulkCopy吗?

时间:2015-10-23 12:57:07

标签: c# sql transactions

SqlBulkCopy中使用TransactionScope是否安全?我知道这个question,但它没有回答这个问题而且它已经很老了。如果它不可能是一个好的选择?

1 个答案:

答案 0 :(得分:2)

似乎如果在创建用于TransactionScope的sql-connection之前创建了SqlBulkCopy并且打开了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