6

Castle ActiveRecord SessionScope を開いています。SessionScope にラップされた nhibernate セッションを使用する必要があります。

SessionScope から現在の NHibernate セッション オブジェクトを取得するにはどうすればよいですか?

返信ありがとうございます。

[更新] 私はこのコードを持っています

    ISession session = SessionScope.Current.GetSession( );

しかし、GetSession パラメーターに何を渡すのかわかりません

4

2 に答える 2

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();
        }
于 2011-11-04T12:52:34.600 に答える
0

Activerecord SessionScopeは、さまざまなタイプの複数のファクトリを処理できると思いますが、それを利用していない場合は、永続化されたクラスである任意のタイプのクラスを渡すのがよいと思います。

ISession session = SessionScope.Current.GetSession( typeof ( YourClass ) );
于 2011-11-03T13:09:28.157 に答える