私は Fluent NHibernate を使用しており、現在、同じテーブルが複数の MSSQL データベースに存在するアーカイブ データを操作する必要があります。ユーザーが提供した日付値に応じて、別のデータベースに接続する必要がありますが、マッピング情報はすべて同じままです。
より具体的に: 指定された Date 値が現在の年内にある場合は DBCUR
を使用し、そうでない場合は年次 DB (2011、2010、2009、...) を使用します。
以前、SessionFactory を何度も再作成するのは非常にコストがかかると人々から言われたことがあります。そのため、既存の sessionFactory を使用して ClassMap を更新する (変更のようなもの) 方法が必要であると考えました。 「CUR.DBO」から「2011.DBO」へのスキーマ) と再接続します。
FluentConfiguration と SessionFactory の両方をいじってみましたが、実行時にマッピングを更新する方法を見つけることができず、ひざまずいてしまいました。
新しい SessionFactory を作成することになりますか? または、実行時に (Fluent) NHibernate のマッピングを再初期化するための実行可能な手順を知っている人はいますか?
編集: 1 つの非常に重要な詳細、SqlConnection も外部で提供されます。すべてのデータベースへのアクセスを提供します。つまり、理論的には、接続を作成する必要はありません。したがって、基本的に私がしなければならないことは、アーカイブごとに SessionFactory を作成して、別のデータベースを指すマッピングのスキーマ情報を更新することです。しかし、これはまさに私が立ち往生しているところです。