最初にターゲット データベースに適した標準の ADO.NET オブジェクトを開き、次のように NH インスタンスに渡すことでSession
、異なるデータベースの同じセッション ファクトリからインスタンスを動的に作成できます。Connection
SessionFactory
var connection = new SqlConnection("target DB connection string");
var session = sessionFactory.OpenSession(connection);
CurrentSessionContext.Bind(session);
上記の簡略化されたコードに示されているように、ADO.NET 接続インスタンスを直接作成するのではなく、依存性注入コンテナーを使用して ADO.NET 接続インスタンスの有効期間と破棄を制御することをお勧めします。
もう 1 つの問題は、NHibernate がSessionFactory
インスタンスの起動時にデータベース アクセスを実行することです。そのため、有効な接続文字列を hibernate.cfg.xml ファイルに指定するか、それをセッション ファクトリ構成ロジックに動的に挿入する必要があります。
アップデート:
Groo は、NHibernate でデータベースを動的に切り替えることに関するすばらしい投稿へのリンクを提供しました。上記のサンプル コードのようなことを行うのではなく、その投稿のアドバイスに従ってください。