【问题标题】:Updating documents in RavenDB在 RavenDB 中更新文档
【发布时间】:2010-06-25 12:30:03
【问题描述】:

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

【问题讨论】:

标签: ravendb


【解决方案1】:

raven 还具有对象跟踪功能。所以以下工作:

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

【讨论】:

  • 说,MyDocType 包含的字段少于文档中的字段,这会删除所有不在 MyDocType 中的字段吗?
  • @Caramiriel 是的 - 因为 RavenDB 是“自我修复”的,当您保存文档时,只会保存类中的字段,并且文档中的任何其他数据都将被删除。可以通过设置 new DocumentStore().Conventions.PreserveDocumentPropertiesNotFoundOnModel 来更改此行为。
【解决方案2】:

RavenDB 支持 PATCH 命令,请参阅the docs 了解更多信息以获取更多信息。通过这种方式,您可以直接更新文档,而无需从服务器中提取、更新然后将其发回。

您还可以使用基于集合的查询在多个文档上运行补丁,有关更多信息,请参阅here。这可以让你做相当于

UPDATE Users
SET IsActive = false
WHERE LastLogin < '2010-05-10'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多