Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我可以在事务内部使用SqlBulkCopy吗_C#_Sql_Transactions - Fatal编程技术网

C# 我可以在事务内部使用SqlBulkCopy吗

C# 我可以在事务内部使用SqlBulkCopy吗,c#,sql,transactions,C#,Sql,Transactions,在TransactionScope中使用SqlBulkCopy安全吗?我知道这一点,但它没有回答这个问题,而且它相当古老。如果不可能,那么什么是好的选择?如果在创建和打开用于SqlBulkCopy的sql连接之前创建了TransactionScope,则使用TransactionScope的事务处理机制。这意味着您需要手动创建自己的SqlConnection并打开它,稍后用于SqlBulkCopy实例 using (var ts = new TransactionScope()) using (

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

如果在创建和打开用于
SqlBulkCopy
的sql连接之前创建了
TransactionScope
,则使用
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
自从我第一次回答以来,你提到的问题似乎有了一个新的答案,他给出了与我相同的答案,因此我希望他有经验证据:)(即,

我如何从TransactionScope获取交易对象?@Luke101你不可能轻松做到这一点,如果有的话,但是,在
TransactionScope
中打开
SqlConnection
似乎做了同样的事情。有关详细信息,请参阅我的更新答案。