当查询扩展关联的导航属性时,Breeze似乎正在恢复fkey属性值 - 即使使用preserveChange合并策略也是如此。我们需要一种方法来保留所有变化。
步骤:修改缓存中实体的fkey属性。来自服务器的查询以及相关导航道具的展开。当查询完成(数据合并)时,fkey属性值是保存的值(已还原)。
为了演示此问题,我运行了以下代码片段两次。第一次加载缓存并将实体[0] .ProjectAreaRef从1修改为48.第二次执行相同的查询来测试合并。在第二个查询orig为48且val为1之后。缓存的实体中的更改被覆盖。
var query = new breeze.EntityQuery().from('Issue');
query = query.expand('oProjectArea');
entityManager.executeQuery(query).then(function (x) {
var entities = x.results;
var val = entities[0].ProjectAreaRef;
if (orig && val !== orig)
console.log('orig:' + orig + ' val:' + val);
entities[0].ProjectAreaRef = 48;
我想有人可能会说,扩展到导航道具是要求刷新关系。否则,检索到的父实体(基于服务器上的fkey值)可能不再与子实体相关联。但是,这对我们来说没问题。让父实体合并到缓存中,即使它不再与子实体关联。
无论这是一个轻微的功能还是一个bug(IMO都是一个bug),我怎样才能轻而易举地保留对fkey属性的更改?如果这是一个错误,你知道一个解决方法吗?如果它是一个功能,是否有另一个功能允许我使用expand()同时保留对fkey属性的更改?
使用最新版本:1.5.3 ......虽然在1.4.11中有相同的行为。
答案 0 :(得分:0)
好的,这是一个bug,现在已在最新的GitHub仓库中修复。此修复程序也将在v 1.5.5(下个月的某个时间)发布。很好听!