2012-03-18 54 views
4

我正在嘗試在每個查詢中使用「WITH UR」。有誰知道如何在db2 ef4中使用事務隔離?我希望linq爲我創建以下查詢:DB2實體框架事務隔離「WITH UR」

從Payroll.Employees中選擇EmployeeID WITH UR;

注意:我已經嘗試使用.net framework 4.0中提供的TransactionScope;它根本沒有幫助。

+3

如果您的提供程序不通過某些顯式配置提供此設置,那麼無需爲DB2編寫自己的EF提供程序就無法在通用級別上實現該設置。 – 2012-03-18 08:58:27

+0

你有沒有想過這個?我有完全相同的問題,並沒有得到任何地方。 – 2012-03-27 13:50:32

回答

0

假設sDB2ConnectionString是用於連接到DB2的字符串。

在事務中指定了隔離級別,但Transaction.IsolationLevel屬性是隻讀的。您只能在創建交易時進行設置。

爲了簡單起見,我使用了一個沒有參數的存儲過程的調用。當然,您可以將任何種類的DB2Command放在事務範圍內。

// string sDB2ConnectionString = ConfigurationManager.AppSettings[environment + "_ConnectionString"]; 

using (DB2Connection conn = new DB2Connection(sDB2ConnectionString)) 
{ 
    conn.Open(); 

    using (DB2Transaction tran = conn.BeginTransaction(IsolationLevel.ReadUncommitted)) 
    { 
     using (DB2Command dbCommand = conn.CreateCommand()) 
     { 
      dbCommand.Transaction = tran; 
      dbCommand.CommandType = CommandType.StoredProcedure; 
      dbCommand.CommandText = "MySchema.MyStoredProcedureName"; 

      dbCommand.ExecuteNonQuery(); 
      tran.Commit(); 
     } 
    } 
}