我一直在嘗試爲Oracle複製SQLConnection.BeginTransaction(String TransactionName)。有一個類OracleConnection.BeginTransaction,但我無法找到該方法的重載,以指定需要使用的事務的名稱。任何幫助,將不勝感激。Oracle等效於SQLConnection.BeginTransaction(字符串TransactionName)
在此先感謝
我一直在嘗試爲Oracle複製SQLConnection.BeginTransaction(String TransactionName)。有一個類OracleConnection.BeginTransaction,但我無法找到該方法的重載,以指定需要使用的事務的名稱。任何幫助,將不勝感激。Oracle等效於SQLConnection.BeginTransaction(字符串TransactionName)
在此先感謝
您可以將一個事務與一個Command對象相關聯。當該命令將被執行時,連接將在該事務的上下文中運行。
還有一個Connection交易對象的屬性,您可以用它來指定與交易相關的連接。
參見本實施例中從MSDN:
using (OracleConnection connection = new OracleConnection(connectionString))
{
connection.Open();
OracleCommand command = connection.CreateCommand();
OracleTransaction transaction;
// Start a local transaction
transaction = connection.BeginTransaction(IsolationLevel.ReadCommitted);
// Assign transaction object for a pending local transaction
command.Transaction = transaction;
try
{
command.CommandText =
"INSERT INTO Dept (DeptNo, Dname, Loc) values (50, 'TECHNOLOGY', 'DENVER')";
command.ExecuteNonQuery();
command.CommandText =
"INSERT INTO Dept (DeptNo, Dname, Loc) values (60, 'ENGINEERING', 'KANSAS CITY')";
command.ExecuteNonQuery();
transaction.Commit();
Console.WriteLine("Both records are written to database.");
}
catch (Exception e)
{
transaction.Rollback();
Console.WriteLine(e.ToString());
Console.WriteLine("Neither record was written to database.");
}
}
目的OracleTransaction不具有返回「名」的任意字符串構件。 我認爲這是要面對的主要問題。
OracleConnection.BeginTransaction()返回一個OracleTransaction對象,所以我無法確定它應該如何爲事務分配一個名稱。
我希望它有幫助。
您可能能夠從DbConnection類繼承並創建自己的BeginTransaction()方法的重載。然後,您必須從DbTransaction類繼承來創建您自己的Commit()和Rollback()方法的重載。然後與DbProviderFactory和DbCommand對象一起使用。
嗯..我會試試看..謝謝.. – Nemo 2011-03-14 13:10:29
我想你可能需要在啓動事務之前執行帶有NAME參數的SET TRANSACTION SQL語句。
問題是關於交易的名稱,而不是它的連接 – onof 2015-08-03 11:54:07