我围绕一个可行的解决方案扭转自己,将 RavenDB 中的多个数据库用于使用 Castle Windsor 进行布线的 ASP.Net MVC 应用程序。
这是当前的安装程序
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();
}
}
以上工作完美,但仅适用于一个 Database。
我找不到正确的想法如何处理另一个数据库。整个链从请求IDocumentSession的域服务开始。然后流程如上述安装程序中指定。但是我在哪里/如何要求“SessionToDb1”或“SessionToDb2”?
当然,重要的是要使用什么连接字符串(指定 DB 属性的位置),还有要在各自的 DB/DocumentStore 中创建什么索引。
有人用温莎做到这一点吗?我在这里想/攻击错了吗?
谢谢!