2011-03-14 12 views
0

oracle用のSQLConnection.BeginTransaction(String TransactionName)をレプリケートしようとしています。クラスOracleConnection.BeginTransactionがありますが、使用する必要があるトランザクションの名前を指定するメソッドのオーバーロードを見つけることができませんでした。これについての助けに感謝します。Oracleに相当するSQLConnection.BeginTransaction(String TransactionName)

ありがとうございました

答えて

-1

トランザクションを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."); 
    } 
} 
+0

質問はトランザクションの名前で、接続ではありません – onof

-1

オブジェクトたOracleTransactionは、「名前」を返す任意の文字列メンバーを持っていません。 私はこれが主要なポイントだと思います。

OracleConnection.BeginTransaction()はOracleTransactionオブジェクトを戻すため、トランザクションに名前を割り当てる方法がわかりません。

私はそれが役に立ちそうです。

0

DbConnectionクラスから継承し、BeginTransaction()メソッドの独自のオーバーロードを作成することができます。次に、DbTransactionクラスから継承して、Commit()メソッドとRollback()メソッドの独自のオーバーロードを作成する必要があります。次に、DbProviderFactoryオブジェクトとDbCommandオブジェクトと一緒に使用します。

+0

うん...私はそれを試してみる..ありがとう.. – Nemo

1

トランザクションを開始する前にNAMEパラメータを使用してSET TRANSACTION SQL文を実行する必要があると思われます。

関連する問題