Fluent NHibernateを使用しています。複数のMSSQLデータベースに同じテーブルが存在する現在、アーカイブされたデータを処理する必要があります。ユーザーが指定したDateの値によっては、別のデータベースに接続する必要がありますが、すべてのマッピング情報は同じままです。同じマップされたテーブルのデータベースの切り替え
、より具体的に:提供日付の値は現在の年以内であれば、そうでない場合は、年間DBを使用して、DB CUR
使用(2011年、2010年、2009年、...)。
今度は、SessionFactoryを何度も再作成することは非常に高価なことだと言われていました。そこで、私は自分自身に、既存のsessionFactoryを使用する方法がなければならないと思いました。 (「CUR.DBO」から「2011.DBO」へのスキーマの変更のようなもの)、再接続します。
私はFluentConfigurationとSessionFactoryの両方を台無しにしようとしたが、は、私は、実行時にマッピングをリフレッシュする方法を見つけることができませんでした膝の矢印を取りました。
私は新しいSessionFactoryを作成しますか?または、実行中にNHibernateのマッピングを(Fluent)再初期化する実行可能なプロシージャを知っている人はいますか?
EDIT:非常に重要な点の1つとして、SqlConnectionも外部的に提供されています。これは、すべてのデータベースへのアクセスを提供します。つまり、理論上は、接続を作成する必要はありません。ですから、基本的には、各アーカイブのSessionFactoryを作成して、マッピングのスキーマ情報を更新し、別のデータベースを参照する必要があります。しかし、これは私が立ち往生した場所です。
なぜ2つのセッションファクトリを作成しませんか? 1つはアーカイブデータベース用、もう1つは本番データベース用です。 –
私たちは1年に1つのアーカイブを持っているので、少なくとも10人ほど作成することになります。それは基本的に私の知る限り、私はする必要がありますが、うまくいけば賢い方法があります... –