2014-01-21 59 views
1

我正在使用我正在使用的其中一個Web服務發生這種重複出現的問題。 我正在使用數據適配器使用事務和批量更新。最重要的是,我還使用Oracle Command Builder來獲取我分配給dataadapter的插入/刪除/更新命令。事務對象與連接對象沒有關聯 - OracleClient

這裏是一些從我的服務中提取的代碼;並與錯誤行:

介意 - 我張貼從我的源代碼中提取:

OracleTransaction trx = null; 
if ((Transaction.Current.TransactionInformation.DistributedIdentifier == Guid.Empty)) 
       { 
        con.ConnectionString = con.ConnectionString + ";enlist=false"; ; 
        con.Open(); 
        trx = con.BeginTransaction(); 
        cmd.Transaction = trx; 
       } 

       try 
       { 
        dsEmpData.AcceptChanges(); 
        for (int i = 0; i < dsEmpData.Tables[0].Rows.Count; i++) 
        { 
         dsEmpData.Tables[0].Rows[i].SetAdded(); 
        } 
        OracleCommandBuilder cb = new OracleCommandBuilder(); 
        string SQL 
          = "--MY SELECT COMMAND. REMOVED BECAUSE IT IS NOT NECESSARY IN THIS BLOCK"; 

        OracleDataAdapter da = new OracleDataAdapter(SQL, ConnectionString); 
        OracleCommandBuilder cmdInsert = new OracleCommandBuilder(da); 
        dsEmpData.Tables[0].TableName = "TABLENAME".ToUpper(); 

        if ((Transaction.Current.TransactionInformation.DistributedIdentifier == Guid.Empty)) 
        { 
         da.SelectCommand.Transaction = trx; 
         da.InsertCommand = cmdInsert.GetInsertCommand();//ERROR LINE 
         da.InsertCommand.Transaction = trx; 
        } 
        da.Update(dsEmpData, "TABLENAME".ToUpper()); 
        if (trx != null) 
        { trx.Commit(); } 
       } 
       catch (Exception ex) 
       { 
        if (trx != null) 
        { trx.Rollback(); } 
        throw new FaultException("MY MESSAGE " + ex.Message); 
       } 

因此,如上面說 - 我得到的異常「交易對象不與連接相關聯對象「上述行:da.InsertCommand = cmdInsert.GetInsertCommand();

任何有關此事的幫助將不勝感激。如果您需要更多信息,請讓我知道。

在此先感謝。

回答

2

這是因爲事務屬於名爲con的連接,它在代碼的第5行中創建。但是,OracleDataAdaptor不與該連接相關聯。你給它連接字符串,而不是連接。這意味着它將創建自己的連接。

然後,您將此適配器的事務與以前的連接關聯。這不行!您必須將數據適配器與事務的相同連接相關聯。您可以將trhe適配器與原始連接相關聯,或者從適配器的連接創建事務;一個或另一個將工作。

乾杯 -

+0

哇 - 這也許是可能的!讓我檢查一下,我會回到你身邊。 –

+0

Bravo!那就是訣竅。謝謝一堆! 乾杯 –

+0

Thx對於這個問題的答案很有幫助,可以幫助我們理解第三方軟件存在的問題。 – boutta