RavenDb 在存储对象时似乎将对象名称复数化。因此,
PhoneBook
变为 PhoneBooks
,PhoneBookCategory
变为 PhoneBookCategories
。
对于任何 ByQueryOperation,如果我编写查询,我必须处理集合的名称。例如。在这里进行批量删除:
var queryParameters = new Raven.Client.Parameters
{
{
"ids", ids.ToArray()
}
};
var q = new IndexQuery
{
Query = "from {collectionName} u where id(u) in ($ids)",
QueryParameters = queryParameters
};
DeleteByQueryOperation op = new DeleteByQueryOperation(q);
现在,我怎样才能确保我得到正确的
collectionName
?
文档的 metadata 包含属性
@collection
,它确定文档属于哪个集合。可以通过调用获取文档的元数据,例如:
var employee = session.Load<Employee>("employees/1-A");
var metadata = session.Advanced.GetMetadataFor(employee);
var collection = metadata["@collection"];
文档元数据 - RavenDB 书籍:
https://ravendb.net/learn/inside-ravendb-book/reader/4.0/2-zero-to-ravendb#document-metadata