breezejs - 从通知更新缓存

时间:2014-01-28 20:55:17

标签: breeze

在我的设置中,当实体发生变化时,我收到来自服务器的信号通知,因为性能问题 - 在通知上有更改实体的所有更改跟踪,所以我可以更新它而无需去服务器,我怎么能在entitymanager上提交更改?因为我使用Angular绑定到缓存,所以我无法替换实体 是通过setUnchanged()吗?

1 个答案:

答案 0 :(得分:1)

PW Kad有正确的答案。只需更新实体并在其上调用 EntityAspect.acceptChanges 。如果您的通知返回一个javascript对象,那么您应该创建一个标识此对象的 EntityKey ,使用 EntityKey 在EntityManager本地缓存中找到现有对象,更新它并然后调用 acceptChanges 。像这样的东西

function mergeFromNotification(entityManager, notificationEntity) {
   // you will need to write 'extractEntityKey'
   var entityKey = extractEntityKey(notificationEntity);
   var existingEntity = entityManager.getEntityByKey(entityKey);
   // updates existingEntity with data from notificationEntity
   breeze.core.extend(existingEntity, notificationEntity);
   existingEntity.entityAspect.acceptChanges() ;

}