2012-04-19 24 views
2

我是raven db的新手。我已閱讀API並嘗試創建數據庫。它有類似EnsureDatabaseExists函數,它在不存在的情況下創建數據庫。它實際上使用DocumentDatabase類型來創建該數據庫。我使用它並創建數據庫,但我想直接使用此對象,以便使用此對象可以直接處理文檔。我做對了嗎?或者可以有更好的方法來處理文件。謝謝。Raven db:創建一個新的數據庫

回答

1

我認爲你混淆了數據庫文檔和查詢文檔。

數據庫文檔是默認數據庫上的一個文檔,它只是表示RavenDB中不是默認數據庫的數據庫。它存儲一些數據,如數據庫名稱和位置。你作爲ravendb的消費者與本文無關。這與查詢任何其他文檔無關。

查看here以瞭解如何查詢ravendb的文檔。爲了查詢特定的數據庫,如果您只使用該數據庫,那麼只需在connection string中指定數據庫名稱即可。如果您一次處理multiy數據庫,則可以在打開會話時指定所需的數據庫名稱,store.OpenSession("database-name")

0

store.DatabaseCommands.GlobalAdmin有三種方法。

  • GetDatabaseNames:列出數據庫名稱
  • EnsureDatabaseExists:如果不存在
  • CreateDatabase它創建數據庫:創建數據庫

注意DocumentStore.Initialize()已經確保了數據庫中創建。您可以傳遞布爾值false以避免此行爲。

// init store object, you pass the service URL + the database name 
var store = new DocumentStore("http://localhost:8001/databases/MyNewDataBase"); 
store.Initialize(false); 

// most simple thing is: 
var dbName = store.DefaultDatabase; 
store.DatabaseCommands.GlobalAdmin.EnsureDatabaseExists(dbName); 

如果您想查詢,而無需創建:

// there is a method to list the database names 
bool exists = false; 
for (int i = 0; i < int.MaxValue; i++) 
{ 
    var names = store.DatabaseCommands.GlobalAdmin.GetDatabaseNames(100, i * 100);  
    if (names.Contains(dbName)) 
    { 
     exists = true; 
     break; 
    } 

    if (names.Length < 100) 
    { 
     // no more databases 
     break; 
    } 
} 

if (exists) 
{ 
    // database exists, do something 
} 

參考:https://ravendb.net/docs/article-page/3.5/Csharp/client-api/commands/how-to/create-delete-database