1

我想将 RavenDB 用于基于 ASP.NET MVC3 构建的个人博客项目。

我喜欢在我的解决方案中有多个项目,因此我将有一个 Web 项目和另一个类库作为博客引擎,使用 RavenDB 作为 Web 项目将调用的数据存储。

我应该如何设置 RavenDB,以便可以从类库中使用它?

4

2 回答 2

0

您可能会考虑的一种选择是使用控制反转/依赖注入来创建 DocumentStore 的实例作为单例,并通过构造函数将其注入到您的服务中。我正在使用 Munq,所以我的示例将使用它,但是还有很多其他 IOC 框架需要考虑。

// In your Global.asax Application_Start
// MUNQ.  This will give you a RavenDB IDocumentStore as Singleton
var ioc = MunqDependencyResolver.Container;
ioc.Register<IDocumentStore>(c => InitializeRaven()).WithLifetimeManager(new ContainerLifetime());

// Initialize yourself some RavenDB
public static IDocumentStore InitializeRaven()
{
    DocumentStore instance = new DocumentStore { Url = "http://localhost:8080/" };
    instance.Initialize();
    return instance;
}

这将为您提供一个 DocumentStore 实例,以在应用程序的整个生命周期中使用。

这是一个 Stack Overflow 问题,可能会给您一些额外的指导(Autofac):

ASP.NET MVC 3、RavenDB 和 Autofac 问题加上 2 其他 Autofac 问题

还有一个 MSNBC 使用它的例子(Ninject):

http://development.msnbc.msn.com/_news/2011/08/19/7419461-ninjectmvc3-dependency-injection-in-30-seconds-or-less?lite

于 2012-05-31T15:10:33.250 回答
-1

您是否阅读过一些关于 RavenDB 的教程/文档?您创建一个DocumentStore允许您连接和查询数据库的方法:

public IEnumerable<Company> GetCompanies()
{
    using (var dc = new DocumentStore("localhost", 8080).Initialize())
    using (var session = dc.OpenSession())
    {
        return session
            .Query<Company>("regionIndex")
            .Where("Region:Europe")
            .ToArray();
    }
}
于 2012-05-31T06:20:24.700 回答