0

有了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

4

1 回答 1

2

根据此页面,在“实例化客户端”标题下:

实际上,创建客户的成本很高。客户端在创建连接池并设置线程以获取集群配置时会产生开销。因此,最佳实践是为每个存储桶、每个 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();
于 2013-04-18T16:55:05.260 回答