Насколько я знаю, нет поддержки для получения списка открытых сессий от фабрики сессий. У меня есть свой собственный способ следить за открытыми сессиями, и я использую эту конструкцию:
Создать класс со слабой ссылкой на ISession. Таким образом, вы не будете прерывать сборщик мусора, если сессии будут собирать мусор:
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 (уровень доступа к данным) у меня есть этот метод:
public ISession GetNewSession()
{
if (_sessionFactory == null)
_sessionFactory = createSessionFactory();
ISession session = _sessionFactory.OpenSession();
OpenSessions.Add(new SessionInfo(session));
return session;
}
Таким образом, я веду список открытых сессий, которые я могу запрашивать при необходимости. Возможно, это отвечает вашим потребностям?