在RavenDB中更新文档

17
如果您在持久化实体上添加、删除或重命名属性,那么更新RavenDB中的文档最简单的方法是什么?

1
请查看此处的文档,描述得非常清楚:http://ravendb.net/docs/client-api/partial-document-updates - Dofs
2个回答

21

raven也具有对象跟踪功能。因此,以下内容可以正常工作:

var doc = _session.Load<MyDocType>(docId);
doc.PropertyToChange = "New Value";
_session.SaveChanges();

假设 MyDocType 中包含的字段比文档中实际存在的字段要少,那么这样做会删除所有不在 MyDocType 中的字段吗? - Caramiriel
@Caramiriel 是的 - 因为RavenDB是“自我修复”的,当您将文档保存回来时,只会保存在类上的字段,并且来自文档的任何其他数据都将被擦除。通过设置new DocumentStore().Conventions.PreserveDocumentPropertiesNotFoundOnModel可以更改此行为。 - adrian

16
RavenDB支持PATCH命令,详细信息请参见文档。这样,您可以直接更新文档,无需从服务器获取它,然后将其更新并发送回去。
此外,您还可以使用基于设置的查询在多个文档上运行补丁,有关更多信息,请参见此处。这使您可以执行相当于...的操作。
UPDATE Users
SET IsActive = false
WHERE LastLogin < '2010-05-10'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接