配線にCastle Windsorを使用するASP.Net MVCアプリに、RavenDBの複数のデータベースを使用する実行可能なソリューションをひねります。
これが現在のインストーラーです
public class RavenInstaller : IWindsorInstaller
{
public void Install(IWindsorContainer container, IConfigurationStore store)
{
container.Register(
Component.For<IDocumentStore>().Instance(CreateDocumentStore()).LifeStyle.Singleton,
Component.For<IDocumentSession>().UsingFactoryMethod(GetDocumentSesssion).LifeStyle.PerWebRequest
);
}
static IDocumentStore CreateDocumentStore()
{
var store = new DocumentStore { ConnectionStringName = "RavenDb_CS9" };
store.Initialize();
IndexCreation.CreateIndexes(typeof(Users).Assembly, store);
return store;
}
static IDocumentSession GetDocumentSesssion(IKernel kernel)
{
var store = kernel.Resolve<IDocumentStore>();
return store.OpenSession();
}
}
上記は完璧に機能しますが、1 つの Database に対してのみです。
別のデータベースを処理する適切な考え方が見つかりません。チェーン全体は、 IDocumentSessionを要求するドメイン サービスから始まります。その後、フローは上記のインストーラーで指定されたとおりです。しかし、「SessionToDb1」または「SessionToDb2」をどこで/どのように要求すればよいですか?
重要なのはもちろん、使用する接続文字列 (DB プロパティが指定されている場所) だけでなく、それぞれの DB / DocumentStore で作成するインデックスも重要です。
ウィンザーを使用してこれを達成した人はいますか? ここで間違って考えたり攻撃したりしていますか?
ありがとう!