NHibernateトランザクションからDbConnection
とDbTransaction
オブジェクトを取得することはできますか?NHibernateから基本コネクションとトランザクションオブジェクトを取得できますか?
NHibernateのいくつかの呼び出しを、同じトランザクション内で3番目の部分ライブラリと組み合わせる必要があります。
NHibernateトランザクションからDbConnection
とDbTransaction
オブジェクトを取得することはできますか?NHibernateから基本コネクションとトランザクションオブジェクトを取得できますか?
NHibernateのいくつかの呼び出しを、同じトランザクション内で3番目の部分ライブラリと組み合わせる必要があります。
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;
}
}
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();
DbTransactionオブジェクトにアクセスするにはどうすればよいですか? –
トランザクションはあなたの接続のために共有されています..あなたはあなたのDbConnectionでセッション中またはそれ以降を作成することができます..それは実際には依然として同じトランザクションです..助けてくれる;) –
うーん。今私はDbCommandが最初にTransactionプロパティを持っているのだろうと思っています。 –