Pregunta NHibernate: cómo configurar el tiempo de espera de conexión


¿Hay alguna manera de configurar el tiempo globalmente que esperarías para conectarte a una base de datos dada, antes de una falla de conexión en NHibernate (tiempo de espera de la conexión)? En ADO.NET puedes hacerlo por una sola conexión como esta:

new SqlConnection().ConnectionTimeout = 10;

Encontré cómo configurar el tiempo que esperarías para un conjunto de resultados, antes de una falla en la ejecución del comando aquí (tiempo de espera del comando). Pero, aparentemente, eso no es lo que necesito


11
2017-07-06 09:05


origen


Respuestas:


Puede configurarlo en la cadena de conexión, "Tiempo de espera de conexión = x".


10
2017-07-06 13:35



Puedes usar el command_timeout configurando su código de configuración NHibernate. Mira la sección 3.4 de la documentación para más detalles.

La configuración XML para esto es la siguiente ...

<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 -->

Estoy usando Fluent NHibernate así que mi código de configuración es el siguiente ...

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);
                         });

11
2017-07-06 09:12



Con NHibernate puede proporcionar la conexión usted mismo:

sessionFactory.openSession(myConnection);

No lo recomendaría, porque es más fácil cuando las sesiones son administradas por NHibernate.

Aún puede escribir su propio proveedor de conexión, que establece lo que quiera en las conexiones creadas.


1
2017-07-06 11:22