检查Raven Db是否存在?

Cyr*_*rix 0 c# ravendb

如果我的Raven Db(http://ravendb.net/)称为"测试",我如何以编程方式检查?

最好的祝福

Nik*_*ava 5

  1. EnsureDatabaseExists是命名空间中IDatabaseCommands定义的扩展方法Raven.Client.Extensions.

要使其工作,您需要为此命名空间添加using语句.

 using Raven.Client;
 using Raven.Client.Extensions;

 using (DocumentStore store = new DocumentStore()
 {
     Url = "http://localhost:8080/" ;
 })
 {
     store.Initialize();
    store.DatabaseCommands.EnsureDatabaseExists("SomeDatabase");
}
Run Code Online (Sandbox Code Playgroud)
  1. 这是我使用的扩展方法:

    public static bool DatabaseExists(this IDocumentStore documentStore, 
    string databaseName) 
    { 
      var headers = documentStore.DatabaseCommands.Head("Raven/Databases/" + databaseName); 
      return headers != null; 
    } 
    
    Run Code Online (Sandbox Code Playgroud)

轻松打电话:

bool exists = documentStore.DatabaseExists("foo"); 
Run Code Online (Sandbox Code Playgroud)

当您的documentStore指向raven的默认系统数据库时,这种方法有效.如果在文档存储上设置DefaultDatabase,我认为它不会正常工作.

  • 您可以使用`GetDatabaseRecordOperation` `var result = store.Maintenance.Server.Send(new GetDatabaseRecordOperation(DatabaseName))` 如果结果为空则数据库不存在 (2认同)