在代码中创建新数据库,RavenDB

时间:2012-12-15 12:18:54

标签: ravendb

我正在运行RavenDB.Client 2.0.2173-Unstable。我正在创建一个多租户系统,作为我的注册过程的一部分,我想创建一个新的Raven数据库。

我有三行简单的代码..

  string newDBName = "1234";
  IDocumentStore documentStore = new DocumentStore { Url = "http://myserver:8080",    DefaultDatabase = newDbName};
  documentStore.Initialize();
  documentStore.DatabaseCommands.EnsureDatabaseExists(newDBName);

根据建议,我也试过这个:

  string newDBName = "1234";
  IDocumentStore documentStore = new DocumentStore { Url = "http://myserver:8080"};
  documentStore.Initialize();
  documentStore.DatabaseCommands.EnsureDatabaseExists(newDBName);

我在最后一行得到一个InvalidOperationException,Raven告诉我它无法弄清楚要做什么。

<h1>Could not figure out what to do</h1>

        <p>Your request didn't match anything that Raven knows to do, sorry...</p>

我知道我的连接/服务器正常工作,因为我能够从默认数据库中读/写。

是权限问题吗?

2 个答案:

答案 0 :(得分:3)

您无法从已存在的数据库创建数据库。将DefaultDatabase字段留空,以便连接到RavenDB系统数据库。然后,您应该能够创建新的租户数据库。

您还应确保在打开会话,创建索引和使用DatabaseCommands时传递租户数据库名称。

答案 1 :(得分:1)

在Ravendb v4中,您可以使用 CreateDatabaseOperation 在服务器上创建新数据库。

store.Maintenance.Server.Send(
         new CreateDatabaseOperation(new DatabaseRecord("MyNewDatabase")));