我使用 getEntityGraph 扩展,它工作正常,但在以下情况除外:
- 添加新实体
- 不要保存它并在实体上调用 setDeleted
- 通过将实体和 np 集合作为参数传递来调用 getEntityGraph
当调用 makePathSegmentFn 时,它会在这一行崩溃:
grps.forEach(function(grp) {
vals = vals.concat(grp._entities.filter(function (en) {
return en.getProperty(fkName) === keyValue;
}));
});
en
为 null,因此会引发异常。我通过检查 en 是否为空来解决这个问题,并且每个似乎都工作正常。但如果这是一个错误,也许应该在原始代码中完成?请注意,np 集合中的所有实体中只有一个实体为 null。我猜那是被删除的,但不能确定。
2014 年 4 月 29 日更新
好吧...我现在明白了。你说的是删除的child实体,而非独立的root entity.
感谢您发现此错误。我向 DocCode 添加了针对此场景的测试,然后修复了该错误。这两项更改都已推送到 github。它们将出现在下一个正式版本中。你可以获取当前getEntityGraph.js来自 github https://github.com/Breeze/breeze.js.labs/blob/master/breeze.getEntityGraph.js现在。
原答案
我无法重复您所描述的特定失败......因为getEntityGraph
在到达之前很久就抛出makePathSegmentFn
... 正如它应该做的那样!
getEntityGraph
应该抛出异常(例如,“'getEntityGraph' root[0] 是一个独立的实体") when any传入的根实体是“分离的”。
当您创建一个新实体并立即删除它(无需先保存)时,其状态将从“已添加”更改为“已分离”;它不再是缓存中的实体。这是预期的行为(请参阅“实体内部”文档主题 http://www.breezejs.com/documentation/inside-entity)。这就是当我完全按照你的重现步骤操作时会发生的情况。
请提供一个 jsFiddle 或 plunker 来演示该错误。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)