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.
Вы все еще можете написать свой собственный провайдер соединений, который устанавливает все, что вы хотите на создаваемых соединениях.