ICurrentSessionContext NHibernate очищается - PullRequest
1 голос
/ 14 сентября 2010

У меня есть приложение 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, поэтому он заново открывает новый сеанс, который прерывает отложенную загрузку для многих наших свойств.

Скажите, пожалуйста, почему он отменяет привязку сеанса к контексту и как этого избежать?

1 Ответ

1 голос
/ 14 сентября 2010

Вместо этого вы можете попробовать thread_static context.

Однако использование одного сеанса для приложения Winforms некорректно и приведет к проблемам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...