2016-10-25 10 views

答えて

2

IDBConnectionオブジェクトを返しますISession.Connection。取引については、下記のブログ記事を参照してください。

//http://ayende.com/blog/1583/i-hate-this-code 

    private static IDbTransaction GetTransaction(ISession session) 

    { 
     using (var command = session.Connection.CreateCommand()) 
     { 
      session.Transaction.Enlist(command); 
      return command.Transaction; 
     } 
    } 
0

NHibernateセッション内でトランザクションを開始でき、DbConnection(SQLまたはOracleにキャストできます - それが意味をなさない場合)へのアクセスを簡単に取得できます。そして、それをものを行うとコミット/ロールバック、最終的に適用されます。

var session = ... // get an NHiberante ISession 
var transaction = session.BeginTransaction(); 

var conn = session.Connection; 
var dbConnection = conn as System.Data.Common.DbConnection; 

// do the stuff with DbConnection 

transaction.Commit(); 
// or 
transaction.Rollback(); 
+0

DbTransactionオブジェクトにアクセスするにはどうすればよいですか? –

+0

トランザクションはあなたの接続のために共有されています..あなたはあなたのDbConnectionでセッション中またはそれ以降を作成することができます..それは実際には依然として同じトランザクションです..助けてくれる;) –

+0

うーん。今私はDbCommandが最初にTransactionプロパティを持っているのだろうと思っています。 –

関連する問題