Ответ 1
Вы можете установить его в строке подключения "Время ожидания подключения = x".
Есть ли способ глобально настроить время, которое вы ожидаете для подключения к данной базе данных, до сбоя соединения в NHibernate (время ожидания соединения)? В ADO.NET вы можете сделать это для одного соединения следующим образом:
new SqlConnection().ConnectionTimeout = 10;
Я нашел, как настроить время, в течение которого вы дождались набора результатов, перед сбоем выполнения команды здесь (время ожидания команды). Но, по-видимому, это не то, что мне нужно
Вы можете установить его в строке подключения "Время ожидания подключения = 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.
Вы все равно можете написать собственный поставщик подключения, который устанавливает все, что вы хотите, в созданных соединениях.