我正在使用servicestack
vs模板和此问题
I'm suggested使用Service.Interface
项目作为地点
我应该在哪里触摸数据库。
之前我使用AppHost
和Configure
方法
配置DocumentStore
。
由于我在Configure
项目上没有Service.Interface
方法
我应该如何配置DocumentStore
以进行通信
和ravendb?
答案 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);
}