2

我正在使用 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()查询,不是吗?如果WaitForIndexesAfterSaveChanges()我的关键查询已经用 标记,我什么时候首先使用WaitForNonStaleResultsAsOfNow()

4

1 回答 1

0

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

于 2019-03-29T12:02:38.940 回答