如何从RavenDB数据库获得所有实体名称(集合名称)
本文关键字:实体 集合 RavenDB 数据库 | 更新日期: 2023-09-27 17:52:46
我需要检索数据库中存在的所有RavenDB集合名称。有什么办法可以做到吗?如何?
如果您使用过studio,您将看到它创建了一个名为Raven/DocumentsByEntityName
的索引。如果你不使用工作室,或者你想确保它在那里,你可以自己构建它:
documentStore.ExecuteIndex(new RavenDocumentsByEntityName());
Raven Studio构建"collections"列表的方式是从该索引中获取Tag
字段的项。你可以做同样的事情:
var results = documentStore.DatabaseCommands
.GetTerms("Raven/DocumentsByEntityName", "Tag", "", 1024);
(如果出于某种原因,您希望有超过1024种不同的实体类型,那么请进行分页。)
最后我得到了一个解决方案,通过尝试与我的知识获得学习文档之前。我想告诉人们,我只在被试探性的人弄得疲惫不堪的时候才来这里。
public string[] getCollectionNames()
{
using (var session = this.store.OpenSession())
{
return session.Advanced.LuceneQuery<dynamic>()
.SelectFields<dynamic>("@metadata")
.Select<dynamic, string>(x => x["@metadata"]["Raven-Entity-Name"])
.Distinct()
.ToArray();
}
}