私が知る限り、セッションファクトリから開いているセッションのリストを取得するサポートはありません。私は開かれたセッションを監視する独自の方法を持っており、私はこの構成を使用します:
弱い参照を使用してクラスを作成します。セッションはゴミが収集されている場合は、ガベージコレクタをinteruptません。この方法:
public class SessionInfo
{
private readonly WeakReference _session;
public SessionInfo(ISession session)
{
_session = new WeakReference(session);
}
public ISession Session
{
get { return (ISession)_session.Target; }
}
}
はあなたの開いているセッションを格納するためのリストを作成します。
List<SessionInfo> OpenSessions = new List<SessionInfo>();
とDALに(データアクセス層)をIこの方法があります:
public ISession GetNewSession()
{
if (_sessionFactory == null)
_sessionFactory = createSessionFactory();
ISession session = _sessionFactory.OpenSession();
OpenSessions.Add(new SessionInfo(session));
return session;
}
このようにして、私は必要なときに照会できるオープンセッションのリストを維持します。おそらく、これはあなたのニーズを満たしていますか?
セッションはどのように管理されていますか? (リクエストごとなど) – AlexCuse
セッションファクトリの周りにラッパーを書くことはできますが、どのセッションを閉じることができるかはどのように判断できますか?たぶん "最高のソリューション"が唯一の解決策です。 –
AlexとGertArnoldに感謝します。セッションは各ページのリクエストごとに管理されています。たとえば、あるセッションが開かれて閉じられた場合などです(閉鎖されていると思われますが、そうでない場合もあります)。 – doc