簡體   English   中英

有沒有辦法將TransactionScope與現有連接一起使用?

[英]Is there a way to use TransactionScope with an existing connection?

我有一些代碼就像建議使用TransactionScope一樣,但有一個環境連接而不是環境事務。

有沒有辦法將TransactionScope對象與現有連接一起使用,或者.Net框架中是否有替代方法用於此目的?

事實上,有一種方法。

connection.EnlistTransaction(Transaction.Current)

它是有效的,如果沒有必要,它不會促使事務分發(與文檔所說的相反)

HTH

要將連接登記到TransactionScope,您需要在其連接字符串中指定'Enlist=true' ,並在該TransactionScope對象的范圍內打開連接。

您可以在現有連接上使用SqlConnection.BeginTransaction

更新 :你可以像這樣使用BeginTransaction

using (SqlConnection connection = new SqlConnection(connectionString))
{
    connection.Open();

    SqlCommand command = connection.CreateCommand();
    SqlTransaction transaction;

    // Start a local transaction.
    transaction = connection.BeginTransaction("SampleTransaction");

    // Must assign both transaction object and connection
    // to Command object for a pending local transaction
    command.Connection = connection;
    command.Transaction = transaction;

    ...
    ...

}

經過更多的研究,我的問題的答案結果是:

不,在實例化TransactionScope對象后需要打開連接。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM