Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Nhibernate Session.BeginTransaction()返回的实例是否等于Session.Transaction?_Nhibernate - Fatal编程技术网

Nhibernate Session.BeginTransaction()返回的实例是否等于Session.Transaction?

Nhibernate Session.BeginTransaction()返回的实例是否等于Session.Transaction?,nhibernate,Nhibernate,我有一个关于NHibernate交易的问题。据我所知,有两种方法可以从ISession检索ITransaction 选项1 ISession.BeginTransaction(); 选项2 ISession.Transaction; 如果我像这样连续地执行它们 ITransaction trans = session.BeginTransaction(); ITransaction trans2 = session.Transaction; trans是否等于trans2?NHiberna

我有一个关于NHibernate交易的问题。据我所知,有两种方法可以从
ISession
检索
ITransaction

选项1

ISession.BeginTransaction();
选项2

ISession.Transaction;
如果我像这样连续地执行它们

ITransaction trans = session.BeginTransaction();
ITransaction trans2 = session.Transaction;
trans
是否等于
trans2

NHibernate source@

来自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;
     }
}

beginTransaction状态为开始事务,而session.transaction将返回当前活动事务,如果为null,则将根据实现创建一个活动事务。它将是相同的实例。谢谢你,卡基!