我正在使用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()
?
答案 0 :(得分:0)
此行为的最可能原因是希望在此操作中等待索引完成。
一个很好的例子就是为什么要这样做,当您创建一个新项目时,下一个操作将显示一个项目列表。在保存期间,您可以使用WaitForIndexesAfterSaveChanges
等待索引更新。