我是raven db的新手。我已阅读API并尝试创建数据库。它具有类似EnsureDatabaseExists函数的功能,如果数据库不存在,它将创建数据库。它实际上使用DocumentDatabase类型来创建该数据库。我使用它并创建数据库,但我想直接使用此对象,以便使用此对象,我可以直接使用文档。我做对了吗?或者可以有更好的方法来处理文档。谢谢。
答案 0 :(得分:1)
我认为你混淆了数据库文档和查询文档。
数据库文档是默认数据库上的文档,它仅代表RavenDB中的数据库,该数据库不是默认数据库。它存储一些数据,如数据库名称和位置。你作为ravendb的消费者与这份文件毫无关系。这与查询任何其他文件无关。
查看here以了解如何查询ravendb文档。为了查询特定数据库,如果您只使用该数据库而不是最好,只需在connection string中指定数据库名称即可。如果您同时处理多个数据库,则可以在打开会话时指定所需的数据库名称store.OpenSession("database-name")
。
答案 1 :(得分: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