NHibernate: как установить время ожидания соединения

Есть ли способ глобально настроить время, которое вы бы подождали для подключения к данной базе данных, до сбоя подключения в NHibernate (время ожидания подключения)? В ADO.NET вы можете сделать это для одного соединения, например:

new SqlConnection().ConnectionTimeout = 10;

Я нашел, как настроить время, которое вы будете ждать для набора результатов, прежде чем сбой выполнения команды здесь (время ожидания команды). Но, видимо, это не то, что мне нужно

3 ответа

Решение

Вы можете установить его в строке соединения "Connection Timeout=x".

Вы можете использовать command_timeout установка в вашем коде конфигурации NHibernate. См. Раздел 3.4 документации для более подробной информации.

Конфигурация XML для этого выглядит следующим образом...

<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
    <session-factory>
        <property name="dialect">NHibernate.Dialect.MsSql2012Dialect</property>
        <property name="connection.connection_string">
            Server=(local);initial catalog=theDb;Integrated Security=SSPI
        </property>
        <property name="command_timeout">100</property>
    </session-factory>
</hibernate-configuration>

<!-- other app specific config follows -->

Я использую Fluent NHibernate, поэтому мой код конфигурации выглядит следующим образом...

FluentConfiguration configuration = Fluently.Configure()
                         .Database(MsSqlConfiguration.MsSql2012.ConnectionString(ConnectionString))
                         .ExposeConfiguration(cfg => cfg
                            .SetProperty("command_timeout", "100")
                         .Mappings(m =>
                         {
                             var cfg = CreateAutomappings();
                             m.AutoMappings.Add(cfg);
                         });

С NHibernate вы можете обеспечить соединение самостоятельно:

sessionFactory.openSession(myConnection);

Я не рекомендовал бы это, потому что это легче, когда сессии управляются NHibernate.

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

Другие вопросы по тегам