servicestack vs模板和ravendb

时间:2014-11-13 08:32:38

标签: c# .net angularjs servicestack ravendb

我正在使用servicestack vs模板和此问题 I'm suggested使用Service.Interface项目作为地点 我应该在哪里触摸数据库。

之前我使用AppHostConfigure方法 配置DocumentStore

由于我在Configure项目上没有Service.Interface方法 我应该如何配置DocumentStore以进行通信 和ravendb?

1 个答案:

答案 0 :(得分:3)

解决方案很简单。在服务类(ServiceInteface)中,你应该注入ravendb session

public class MyServices : Service{
   private readonly IDocumentSession session;
   public MyServices(IDocumentSession session){
      this.session = session;
   }

   // now use session to query data from database inside your webservice method call
   public object Any(SomeObjectReq request){
      var data = session.Query<ObjectToQuery>().ToList();
   }

因为在你的web prj中引用了这个项目(ServiceInteface),AppHost所在的你应该将你的db infrastracture(IDocumentStore)放在AppHost Configure方法中。

public override void Configure(Container container)
{
      var store = new DocumentStore(){
          Url = "http://",
          DefaultDatabase = "xxxxxx"
      }.Initialize();

      // register ravendb
      container.Register(store);
      container.Register(c =>c.Resolve<IDocumentStore>).OpenSession()).ReusedWithin(ReuseScope.Request);
 }