我需要检索数据库中存在的所有 RavenDB 集合名称。有没有办法做到这一点?如何?
问问题
1304 次
2 回答
6
如果您使用过该工作室,您会看到它创建了一个名为Raven/DocumentsByEntityName
. 如果你不使用工作室,或者你想确保它在那里,你可以自己构建它:
documentStore.ExecuteIndex(new RavenDocumentsByEntityName());
Raven Studio 构建其“集合”列表的方式是Tag
从该索引中获取字段的术语。你可以做同样的事情:
var results = documentStore.DatabaseCommands
.GetTerms("Raven/DocumentsByEntityName", "Tag", "", 1024);
(如果您出于某种原因期望超过 1024 种不同的实体类型,请分页。)
于 2013-01-12T23:12:44.397 回答
2
最后,我通过尝试使用我之前获得的学习文档的知识得到了一个解决方案。我想给人们做个广告,我只有在我厌倦了试探性的时候才来这里。
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();
}
}
于 2013-01-12T19:34:26.457 回答