RavenDB一致性-WaitForIndexesAfterSaveChanges()/ WaitForNonStaleResultsAsOfNow

时间:2019-03-28 09:06:20

标签: ravendb data-consistency

我正在使用RavenDB 3.5。 我知道查询实体不是acid,而是按ID加载。 显然,写入数据库也是acid。 到目前为止,一切都很好。 现在是一个问题: 我找到了一些代码:

  session.Advanced.WaitForIndexesAfterSaveChanges();
                entity = session.Load<T>(id);
                session.Delete(entity);
                session.SaveChanges();
                // Func<T, T> command
                command?.Invoke(entity);

在这里调用WaitForIndexesAfterSaveChanges()的目的是什么? 是因为执行命令吗? 还是因为去皮/消费查询应该立即赶上所做的那些更改? 如果是这样,我可以在此代码块中删除WaitForIndexesAfterSaveChanges(),而在查询中仅添加WaitForNonStaleResultsAsOfNow(),不是吗? 如果我的关键查询已经用WaitForIndexesAfterSaveChanges()标记,那么我什么时候应该首先使用WaitForNonStaleResultsAsOfNow()

1 个答案:

答案 0 :(得分:0)

此行为的最可能原因是希望在此操作中等待索引完成。 一个很好的例子就是为什么要这样做,当您创建一个新项目时,下一个操作将显示一个项目列表。在保存期间,您可以使用WaitForIndexesAfterSaveChanges等待索引更新。