NHibernate: восстановить сеанс после потери соединения - PullRequest
1 голос
/ 26 мая 2010

Я использую NHibernate с SQL Server 2005 в клиентском приложении WPF.

Если я вручную остановлю службу SQL Server, а затем перезапущу ее, сеанс не будет автоматически повторно подключаться.

Пока я делаю эту ведьму, кажется, работает:

try
{
    using (ITransaction transaction = this.Session.BeginTransaction())
    {
        // some select here
    }
}catch(Exception ex)
{                
    if(this.Session.Connection.State == ConnectionState.Closed)
    {
        try
        {
            this.Session.Connection.Open();
        }
        catch (Exception)
        {
        }
    }
}

Есть ли лучший способ?

Ответы [ 2 ]

1 голос
/ 27 мая 2010

NHibernate не будет обрабатывать потери соединения для вас. Для таких иногда связанных сценариев я хотел бы изучить использование локальной базы данных, как предложено в в этом вопросе , а затем использовать Microsoft Sync Framework для синхронизации локальной и центральной баз данных. Также см. этот связанный вопрос .

0 голосов
/ 26 мая 2010

Если сервер просто останавливается, я думаю, что есть другие проблемы. У меня нет опыта работы с WPF, но есть много вопросов, связанных с nhibernate / WPF ( SO query ).

Если соединения с базой данных иногда теряются, вы можете взглянуть на шаблон UnitOfWork.

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