如何从Castle ActiveRecord SessionScope检索当前的NHibernate Session对象

man*_*llt 6 nhibernate session castle-activerecord object session-scope

我有一个开放的Castle ActiveRecord SessionScope.我需要使用包装在SessionScope中的nhibernate会话.

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

非常感谢你的回复.

[更新]我有这个代码

    ISession session = SessionScope.Current.GetSession( );
Run Code Online (Sandbox Code Playgroud)

但我不知道什么传递给GetSession参数

man*_*llt 9

我用这段代码解决了它:

        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();
        }
Run Code Online (Sandbox Code Playgroud)


jis*_*shi 0

我认为 Activerecord SessionScope 可以处理不同类型的多个工厂,但如果您不利用它,我认为您最好传入任何类型的持久类:

ISession session = SessionScope.Current.GetSession( typeof ( YourClass ) );
Run Code Online (Sandbox Code Playgroud)