首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RavenDB中的负载全集

RavenDB中的负载全集
EN

Stack Overflow用户
提问于 2014-09-02 17:46:06
回答 1查看 558关注 0票数 0

在使用RavenDB的应用程序启动时,我需要加载特定类型的文档的完整集合并循环它们。文档的数量应该总是很小(< 1000)。

我可以通过:

代码语言:javascript
复制
session.Query<MyType>();

但我想确保我得到的结果是立即一致的。

这种情况似乎介于Load()Query()之间,因为(我认为)查询的最终意图是一致的,而加载是打算立即一致的吗?

但是在这种情况下,不应该包含索引(没有过滤或排序),那么使用Query()是否会立即保持一致?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-02 19:42:44

Query()总是立即不一致的session.SaveChanges()只存储到文档存储区。索引总是在稍后异步更新,尽管大多数情况下非常快!

这通常是一个糟糕的建模设计和一个文档数据库的代码气味。因为您提到的是在应用程序启动时,并且数量相对较少,所以它听起来像是引用信息,很少发生更改。您能否将所有这些都包含在一个包含List<MyType>的文档中呢?

如果做不到这一点,您可以尝试LoadStartingWith()命令,它仍然是完全ACID的,并为它提供适合所有必要文档的前缀,尽管高达1000仍然很多,而且我不知道该方法是返回所有结果还是在某个时候切断它。

如果必须使用Query(),则必须使用.WaitForNonStaleResults()的一个变体(其他变体考虑您正在等待的内容,而不是要求所有索引都完成)才能获得一致的结果,但如果文档不经常更改,这应该相当安全。虽然我确实讨厌使用几乎所有形式的这种方法,但我更喜欢使用上述任何一种更可取的方法。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25629308

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档