如何从Castle ActiveRecord SessionScope中检索当前的NHibernate会话对象



我有一个开放的城堡ActiveRecord SessionScope。我需要使用封装在SessionScope中的非hibernate会话。

如何从SessionScope中检索当前的NHibernate会话对象?

非常感谢您的回复。

(更新)我有这个代码

    ISession session = SessionScope.Current.GetSession( );

但我不知道传递给GetSession参数

我用下面的代码解决了这个问题:

        ISessionFactoryHolder holder = ActiveRecordMediator.GetSessionFactoryHolder();
        ISessionScope activeScope = holder.ThreadScopeInfo.GetRegisteredScope();
        ISession session = null;
        var key = holder.GetSessionFactory(typeof(ActiveRecordBase));
        if (activeScope == null)
        {
            session = holder.CreateSession(typeof(ActiveRecordBase));
        }
        else
        {
            if (activeScope.IsKeyKnown(key))
                session = activeScope.GetSession(key);
            else
                session = holder.GetSessionFactory(typeof(ActiveRecordBase)).OpenSession();
        }

我认为Activerecord SessionScope可以处理不同类型的多个工厂,但如果你不利用,我认为你会很好地传递任何类型的类,这是一个持久的:

ISession session = SessionScope.Current.GetSession( typeof ( YourClass ) );

相关内容

  • 没有找到相关文章

最新更新