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