Подтвердить что ты не робот

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

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

new SqlConnection().ConnectionTimeout = 10;

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

4b9b3361

Ответ 1

Вы можете установить его в строке подключения "Время ожидания подключения = x".

Ответ 2

Вы можете использовать параметр 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);
                         });

Ответ 3

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

sessionFactory.openSession(myConnection);

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

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