我正在尝试使用"sandbox editor"方法exportEntities and importEntities详细介绍Cool Breezes部分(以及许多SO帖子中)。
我有一个主/父实体,它有一个或多个子实体。我有一个HTML视图(使用Aurelia,但这并不重要),它显示父实体的4个属性,然后显示每个子实体的3或4个属性。在此示例中,父级只有一个子实体。
视图使用新的entityManager,父/子实体已从' master'中导入。 entityManager采用通常的导出/导入方式。到目前为止一切都很好。
我编辑子实体上的一个属性并保存它。我将saveResult传递给updateMasterWithSaveResult
的副本。一切正常,直到masterEm.importEntities(exported);
问题
调用masterEm.importEntities(exported)
之后,masterEm现在包含原始父级,但子属性数组现在包含 2个元素,并且它们都是相同的,更新的子元素。它们是相同的 - 相同的钥匙,同样的一切。
分析
经过大量追踪后,我将其缩小到a50_entityManager.js中的_linkRelatedEntities
。在此功能的底部,它是孩子的handles the foreign keys,并且会调用parent.getProperty(invNp.name).push(entity)
或parent.getProperty(invNp.name)._push(entity)
但是
似乎没有检查孩子是否已经连接。所以在这种情况下,子实体是
已经在数组中,但第二次添加。
问题:这是预期的结果吗?如果是这样,我是否遗漏了某些东西,或者是否有适当的'绕过它,以便我最终只有一个子元素?
我的临时解决方案是在运行importEntities
后对子数组运行重复数据删除,但至少可以说这很糟糕。