Fluent NHibernate + 複数のデータベースから質問が続きます(このリンクをたどる必要はありません。ここには十分な背景があるはずです)。
私の問題はこれです:
Fluent NHibernate を使用しています。私のアプリケーションは複数のデータベースを使用しています。各データベースには、それに対して登録 (マップ) された独自のエンティティがあります。その結果、複数のセッション ファクトリがあり、それぞれが単一の DB に関連し、それぞれが独自のマップされたエンティティのセットを「含んでいます」。
エンティティをロードするために、任意の登録済みエンティティ (任意の DB) に使用できるいくつかの標準的なロード メソッドを提供するジェネリック Factory クラスを作成しました。問題は次のとおりです。ロード メソッドは、処理に追われているエンティティ クラスの正しいセッション ファクトリを使用する必要があります。どのセッション ファクトリを使用する必要があるかを判断するにはどうすればよいですか? 私はすべてのセッション ファクトリを「手元に」持っています (そしてデータベース名でインデックス化されています)。ロードしようとしているエンティティの種類だけを知っていて、使用する適切なセッション ファクトリを選択する方法が必要です。
例えば:
public IBaseBusinessObject CreatePopulatedInstance(Type boType, Guid instanceKey)
{
IBaseBusinessObject result = null;
ISessionFactory sessionFactory = GetSessionFactory(boType);
using (ISession session = sessionFactory.OpenSession())
{
using (session.BeginTransaction())
{
result = (IBaseBusinessObject)session.Get(boType, instanceKey);
}
}
return result;
}
GetSessionFactory(boType) で何が必要ですか?
読んでくれてありがとう!