У меня есть приложение Windows.Forms, и нам нужно использовать один сеанс и держать его открытым, потому что наше приложение является устаревшим продуктом, который мы переходим на NH.
Вот код, который получает сеанс:
public static ISession GetCurrentSession()
{
ISession session;
if ( CurrentSessionContext.HasBind( SessionFactory ) )
{
session = SessionFactory.GetCurrentSession();
}
else
{
_Log.Info( "Unable to get a current session. Opening a new one." );
session = OpenSession();
CurrentSessionContext.Bind( session );
}
return session;
}
hibernate.cfg.xml имеет это свойство:
<property name="current_session_context_class">call</property>
Мы используем одну тему в приложении.
Проблема в том, что часто у него нет сеанса в CurrentSessionContext, поэтому он заново открывает новый сеанс, который прерывает отложенную загрузку для многих наших свойств.
Скажите, пожалуйста, почему он отменяет привязку сеанса к контексту и как этого избежать?