使用RavenDb
这真的是小菜一碟:
public class DataAccessModule : NinjectModule {
public override void Load() {
Bind<IDocumentStore>().ToMethod(
context => {
var documentStore = new EmbeddableDocumentStore {
DataDirectory = @"~/App_Data/database",
UseEmbeddedHttpServer = true
};
return documentStore.Initialize();
}
).InSingletonScope();
Bind<IDocumentSession>().ToMethod(context =>
context.Kernel.Get<IDocumentStore>().OpenSession()
).InRequestScope();
}
}
如何管理Couchbase .NET client
的依赖注入?
答案 0 :(得分:2)
根据this page,在“实例化客户”标题下:
在实践中,创建客户端的成本很高。客户端在创建连接池并设置线程以获取群集配置时会产生开销。因此,最佳做法是根据AppDomain为每个存储桶创建一个客户端实例。
与RavenDB不同,CouchDB似乎没有“会话”或其他必须根据请求实例化的工作单元容器。
因此,如果您想使用像Ninject这样的DI容器,您只需将CouchbaseClient
类注册为单例,可能使用ICouchbaseClient
接口。
Bind<ICouchbaseClient>().ToMethod(
context => {
var client = new CouchbaseClient();
// do anything else you need to init the client here
return client;
}
).InSingletonScope();