如何強制更新緩存?微風:我如何強制更新緩存中的實體
我有一個實體,實際上是數據庫中的一個視圖。我想強制緩存的實體進行編輯。通常,在保存實體時,緩存也會更新。但在這種情況下,我無法保存實體,因爲它是一個視圖。因此我想強制緩存刷新並從數據庫中讀取更新的值。
我該怎麼做?
如何強制更新緩存?微風:我如何強制更新緩存中的實體
我有一個實體,實際上是數據庫中的一個視圖。我想強制緩存的實體進行編輯。通常,在保存實體時,緩存也會更新。但在這種情況下,我無法保存實體,因爲它是一個視圖。因此我想強制緩存刷新並從數據庫中讀取更新的值。
我該怎麼做?
重寫具有OverwriteChanges的MergeStrategy的實體。就像是。
var entityKey = myEntity.entityAspect.getKey();
var query = EntityQuery.fromEntityKey(entityKey)
.using(MergeStrategy.OverwriteChanges);
myEntityManager.executeQuery(query).then(...);
承諾解決後,實體的最新版本將在緩存中。
周杰倫的建議的作品,但有一個稍微簡單的方法太... 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(...);
謝謝。這應該會生成一個http請求來獲取新的數據集,對吧?我使用Chrome開發者工具來檢查請求是否確實發送了請求,但我看不到任何請求。 – jpo 2014-12-12 17:36:28
是的,它會生成一個HttpRequest,不知道爲什麼你沒有看到它。實體是否得到更新? – 2014-12-12 19:08:42
否。我試圖更新的實體是查找。查找是按照http://www.getbreezenow.com/documentation/lookup-lists所述創建的。因此,它是與其他實體(查找)一起創建的。如果我使用您提供的代碼,可以輕鬆地在控制器中爲我的LookUp方法創建HttpRequest,儘管我只刷新一個實體?或者我不應該這樣聲明查找列表? – jpo 2014-12-12 19:13:25