NHibernate:如何设置连接超时

本文关键字:设置 连接 超时 何设置 NHibernate | 更新日期: 2023-09-27 18:01:15

在NHibernate中发生连接故障(连接超时(之前,是否有任何方法可以全局设置您等待连接到给定数据库的时间?在ADO.NET中,您可以对这样的单个连接执行此操作:

new SqlConnection().ConnectionTimeout = 10;

我发现了如何在命令执行失败(命令超时(之前设置等待结果集的时间。但是,很明显,这不是我需要的

NHibernate:如何设置连接超时

您可以在NHibernate配置代码中使用connection_timeout设置。有关详细信息,请参阅文件的第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="connection_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("connection_timeout", "100")
                         .Mappings(m =>
                         {
                             var cfg = CreateAutomappings();
                             m.AutoMappings.Add(cfg);
                         });

您可以在连接字符串"connection Timeout=x"上设置它。

使用NHibernate,您可以自己提供连接:

sessionFactory.openSession(myConnection);

我不建议这样做,因为当会话由NHibernate管理时会更容易。

您仍然可以编写自己的连接提供程序,它可以在创建的连接上设置您想要的任何内容。