1

NHibernateでの取引について質問があります。私の知る限り、から取得するには2つの方法がありITransactionますISession

オプション1

ISession.BeginTransaction();

オプション2

ISession.Transaction;

このように連続して実行すると

ITransaction trans = session.BeginTransaction();
ITransaction trans2 = session.Transaction;

trans等しいtrans2ですか?

4

1 に答える 1

0

NHibernate ソース @ https://github.com/nhibernate

Isession @ NHibernate.Impl.SessionImpl のセッション実装から

public ITransaction BeginTransaction()
{
    using (new SessionIdLoggingContext(SessionId))
    {
        if (rootSession != null)
        {
            // Todo : should seriously consider not allowing a txn to begin from a child session
            //      can always route the request to the root session...
            log.Warn("Transaction started on non-root session");
        }

        CheckAndUpdateSessionStatus();
        return connectionManager.BeginTransaction();
    }
}

public ITransaction Transaction
{
    get { return connectionManager.Transaction; }
}

NHibernate.Adonet.ConnectionManager クラスから

public ITransaction BeginTransaction()
{
    Transaction.Begin();
    return transaction;
}

public ITransaction Transaction
{
     get
     {
         if (transaction == null)
         {
              transaction = session.Factory.TransactionFactory.CreateTransaction(session);
         }

         return transaction;
     }
}
于 2012-09-15T07:30:22.737 に答える