我正在使用RavenDB 3.5。 我知道查询实体不是acid
但每个 ID 加载是。 显然写信给DB也是acid
. 目前为止,一切都好。 现在一个问题: 我找到了一些代码:
session.Advanced.WaitForIndexesAfterSaveChanges();
entity = session.Load<T>(id);
session.Delete(entity);
session.SaveChanges();
// Func<T, T> command
command?.Invoke(entity);
在这里打电话WaitForIndexesAfterSaveChanges()
的目的是什么? 这是因为执行命令吗? 还是因为去污/消费查询应该立即赶上所做的更改? 如果是这种情况,我可以删除此代码块中的WaitForIndexesAfterSaveChanges()
,然后在查询中添加WaitForNonStaleResultsAsOfNow()
,不是吗? 如果我的关键查询已经用WaitForNonStaleResultsAsOfNow()
标记,我什么时候会首先使用WaitForIndexesAfterSaveChanges()
?
此行为的最可能原因是希望等待此操作中的索引完成。 要这样做的一个很好的例子是,当您创建一个新项目时,下一个操作将显示项目列表。在保存期间,您可以使用WaitForIndexesAfterSaveChanges
等待索引更新。