Breeze:如何强制刷新缓存中的实体

时间:2014-12-10 22:19:35

标签: caching refresh breeze hottowel

如何强制缓存更新?

我有一个实体,实际上是数据库中的一个视图。我想强制缓存的实体进行编辑。通常,在保存实体时,也会更新缓存。但在这种情况下,我无法保存实体,因为它是一个视图。因此,我想强制缓存刷新并从数据库中读取更新的值。

我该怎么办呢?

2 个答案:

答案 0 :(得分:2)

杰伊的建议有效,但也有一个稍微简单的方法...... EntityQuery.fromEntities

breeze.EntityQuery.fromEntities(myEntity)
    .using(myEntityManager).execute().then(...);

如果您要覆盖myEntity的可能挂起的更改,请像杰伊那样添加OverwriteChanges:

breeze.EntityQuery.fromEntities(myEntity)
    .using(breeze.MergeStrategy.OverwriteChanges)
    .using(myEntityManager).execute().then(...);

如果你想刷新一堆实体(所有相同类型),你也可以这样做:

breeze.EntityQuery.fromEntities(employees) // employees is an array of Employee entities
    .using(breeze.MergeStrategy.OverwriteChanges)
    .using(myEntityManager).execute().then(...);

答案 1 :(得分:1)

请求MergeStrategy为OverwriteChanges的实体。像。的东西。

var entityKey = myEntity.entityAspect.getKey();
var query = EntityQuery.fromEntityKey(entityKey)
    .using(MergeStrategy.OverwriteChanges);
myEntityManager.executeQuery(query).then(...);

在promise解析后,实体的最新版本将在缓存中。