我想将 RavenDB 用于基于 ASP.NET MVC3 构建的个人博客项目。
我喜欢在我的解决方案中有多个项目,因此我将有一个 Web 项目和另一个类库作为博客引擎,使用 RavenDB 作为 Web 项目将调用的数据存储。
我应该如何设置 RavenDB,以便可以从类库中使用它?
我想将 RavenDB 用于基于 ASP.NET MVC3 构建的个人博客项目。
我喜欢在我的解决方案中有多个项目,因此我将有一个 Web 项目和另一个类库作为博客引擎,使用 RavenDB 作为 Web 项目将调用的数据存储。
我应该如何设置 RavenDB,以便可以从类库中使用它?
您可能会考虑的一种选择是使用控制反转/依赖注入来创建 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):
您是否阅读过一些关于 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();
}
}