Breeze entityManager importEntities复制更新的子实体

时间:2016-08-23 11:55:46

标签: breeze

我正在尝试使用"sandbox editor"方法exportEntities and importEntities详细介绍Cool Breezes部分(以及许多SO帖子中)。

我有一个主/父实体,它有一个或多个子实体。我有一个HTML视图(使用Aurelia,但这并不重要),它显示父实体的4个属性,然后显示每个子实体的3或4个属性。在此示例中,父级只有一个子实体。

视图使用新的entityManager,父/子实体已从' master'中导入。 entityManager采用通常的导出/导入方式。到目前为止一切都很好。

我编辑子实体上的一个属性并保存它。我将saveResult传递给updateMasterWithSaveResult的副本。一切正常,直到masterEm.importEntities(exported);

  • imports []只包含一个更新的子实体 - 正确。
  • 删除[]为空 - 正确。
  • 导出包含更新的子实体信息 - 正确。
  • masterEm包含原始父级和原始(未更新)子级 - 正确。

问题

调用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后对子数组运行重复数据删除,但至少可以说这很糟糕。

0 个答案:

没有答案