我们正在开发一个移动跨平台应用程序,当设备位于没有网络覆盖的区域时,它使用 Breeze.Sharp 导入和导出操作来持久化数据。
当一个实体应该从 UI 中删除时,我们设置entity.EntityAspect.Delete()并且一切都很好:EntityState 设置为 Deleted 并且实体从导航集(和 UI 列表)中删除。然后,我们通过EntityManager.ExportEntities()将实体导出到文件。当应用程序关闭并重新启动时,我们使用EntityManager.ImportEntities()从文件中导入实体。这就是问题发生的地方。被删除的实体仍然是它被删除的导航集的一部分(它在导航集中,即使它的EntityState在导入后被删除,也可以在UI列表中看到),并且可以迭代和操作以及其他导航集的未删除实体。
我尝试在导入后将已删除实体的状态重置为已删除(没有运气):
this.EntityManager.ImportEntities(content, new ImportOptions(MergeStrategy.Disallowed, true));
foreach (var entity in this.EntityManager.GetEntities(EntityState.Deleted))
{
entity.EntityAspect.Delete(); // no luck
}
此线程上存在相同的问题,但它适用于微风.js,并且似乎没有在最新的 Breeze.Sharp 中得到修复。当有多个实体管理器时,那里提供的解决方案似乎有效,但这不是我们的情况,我们只有一个。我们使用的是 Breeze.Sharp 版本 0.6.0.5。(目前最新)
如果修复将在下一个版本中发布,您能否确认或提供此问题的解决方案或提供信息?
谢谢