NHibernate: how to set connection timeout

醉酒当歌 提交于 2019-12-12 07:45:23

问题


Is there any way to globally setup time you would wait for connecting to a given database, before a connection failure in NHibernate (connection timeout)? In ADO.NET you can do it for a single connection like this:

new SqlConnection().ConnectionTimeout = 10;

I found how to setup the time you would wait for a result set, before a command execution failure here (command timeout). But, apparently, that's not what I need


回答1:


You can set it on the connection string, "Connection Timeout=x".




回答2:


You can use the command_timeout setting in your NHibernate configuration code. See section 3.4 of the documentation for full details.

The XML configuration for this is as follows...

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

I'm using Fluent NHibernate so my configuration code is as follows...

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:


With NHibernate you can provide the connection yourself:

sessionFactory.openSession(myConnection);

I wouldn't recommend it, because it's easier when sessions are managed by NHibernate.

You can still write your own connection provider, which sets whatever you want on the created connections.



来源:https://stackoverflow.com/questions/31241733/nhibernate-how-to-set-connection-timeout

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!