web-dev-qa-db-ja.com

NHibernate:接続タイムアウトの設定方法

NHibernateで接続エラー(接続タイムアウト)になる前に、特定のデータベースへの接続を待機する時間をグローバルにセットアップする方法はありますか? ADO.NETでは、次のように単一の接続でそれを行うことができます。

new SqlConnection().ConnectionTimeout = 10;

コマンド実行が失敗する前に、結果セットを待機する時間を設定する方法を見つけました ここ (コマンドタイムアウト)。しかし、どうやら、それは私が必要とするものではありません

13
Igor Bendrup

接続文字列 "Connection Timeout = x"で設定できます。

11
Roger

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

NHibernateを使用すると、接続を自分で提供できます。

sessionFactory.openSession(myConnection);

NHibernateがセッションを管理する方が簡単なので、お勧めしません。

作成した接続に必要なものを設定する独自の接続プロバイダーを作成することもできます。

1