NHibernate:如何设置连接超时
NHibernate: how to set connection timeout
在 NHibernate 中出现连接失败(连接超时)之前,是否有任何方法可以全局设置您等待连接到给定数据库的时间?在 ADO.NET 中,您可以像这样为单个连接执行此操作:
new SqlConnection().ConnectionTimeout = 10;
我找到了如何设置在命令执行失败之前等待结果集的时间 here(命令超时)。但是,显然,这不是我需要的
您可以在 NHibernate 配置代码中使用 connection_timeout
设置。有关详细信息,请参阅 3.4 of the documentation 部分。
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);
});
使用 NHibernate,您可以自己提供连接:
sessionFactory.openSession(myConnection);
我不推荐它,因为当会话由 NHibernate 管理时它更容易。
您仍然可以编写自己的连接提供程序,在创建的连接上设置您想要的任何内容。
您可以在连接字符串上设置它,"Connection Timeout=x"。
在 NHibernate 中出现连接失败(连接超时)之前,是否有任何方法可以全局设置您等待连接到给定数据库的时间?在 ADO.NET 中,您可以像这样为单个连接执行此操作:
new SqlConnection().ConnectionTimeout = 10;
我找到了如何设置在命令执行失败之前等待结果集的时间 here(命令超时)。但是,显然,这不是我需要的
您可以在 NHibernate 配置代码中使用 connection_timeout
设置。有关详细信息,请参阅 3.4 of the documentation 部分。
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);
});
使用 NHibernate,您可以自己提供连接:
sessionFactory.openSession(myConnection);
我不推荐它,因为当会话由 NHibernate 管理时它更容易。
您仍然可以编写自己的连接提供程序,在创建的连接上设置您想要的任何内容。
您可以在连接字符串上设置它,"Connection Timeout=x"。