TL : DR - 使用带有 Breeze.js 的大数据
我还没有找到最优雅的方法来做到这一点,寻找具有查询大数据并仍然控制缓存的良好经验的人 -
如果我出去访问服务器,假设我得到了 20k 条记录,每条记录都有一个 Id 和一个 name 属性。因为我想在与该数据集交互时利用我的缓存,所以我缓存数据并用它做一些事情。
然后说我想查看一组新数据,但又不想丢失所有导航属性,所以我出去,点击服务器,将更多实体添加到缓存中,然后因为我喜欢查看我的数据,所以我做了一个选择查询以使 POJO 推入网格。
我第一次访问服务器并缓存这些记录时,我没有对本地缓存应用任何过滤器并不重要。然而,第二次,我的缓存现在可能包含两倍于我想要使用的实体数量。
同样,我不想对数据进行很多复杂的过滤,这就是服务器的用途。
问题
如果不使用相同的查询参数,我不能再访问我的本地缓存,这是不可能的(或在合理范围内)
由于我使用 Knockout.js 进行数据绑定,我需要在返回数据后对数据使用选择查询以获取 POJO(ko.toJS() 不会展平导航属性,ko.toJSON() 不起作用在 Breeze 实体上,因为它认为它们是递归的)
半途而废的解决方案
我可以创建我的 entityManager 的副本,出去再次获取导航属性,然后重新查询数据,但是我不得不做很多额外的查询
我想做什么
清除该实体类型的缓存,这样当我用新实体重新填充它时,我就可以获取该数据以进行处理。