NHibernateで接続エラー(接続タイムアウト)になる前に、特定のデータベースへの接続を待機する時間をグローバルにセットアップする方法はありますか? ADO.NETでは、次のように単一の接続でそれを行うことができます。
new SqlConnection().ConnectionTimeout = 10;
コマンド実行が失敗する前に、結果セットを待機する時間を設定する方法を見つけました ここ (コマンドタイムアウト)。しかし、どうやら、それは私が必要とするものではありません
接続文字列 "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がセッションを管理する方が簡単なので、お勧めしません。
作成した接続に必要なものを設定する独自の接続プロバイダーを作成することもできます。