我认为entity.entityAspect.setDeleted()的想法是在实体上设置“已删除”标志,但没有其他内容?
问题是我有一个observableArray实体,我在其中一个上调用“setDeleted()”,我的observableArray立即减少一个。当我随后使用作为参数传入的实体的observableArray调用“saveChanges”时,删除的实体不存在,这似乎阻止删除永久化,因为当我刷新页面时实体仍然存在。
我在这里错过了一个基本点吗?我的saveChanges方法适用于新创建的实体和已更改的实体,只是没有删除,因为它们在调用“saveChanges”时从不存在!
return manager.saveChanges(entities)
.then(saveSucceeded)
.fail(saveFailed);
答案 0 :(得分:4)
调用“setDeleted”,做了几件事(按设计)。
1)它将实体标记为“已删除”,即entityAspect.entityState变为“已删除”。
2)实体将从其所属的任何导航属性数组中删除。即如果您删除'orderDetail',它将从父'orderDetails'集合中删除,以及它所属的任何其他导航集合。
3)如果实体被“保存”,它实际上在数据库中被删除,并且客户端上的实体进入“分离”状态。 (这意味着您必须在没有任何参数的情况下调用EntityManager.saveChanges(在这种情况下,breeze将所有添加/修改或删除的实体发送到服务器)或者您必须明确地将“已删除”实体以及任何其他更改传递给saveChanges调用。
我的猜测是你的'observable'数组实际上是导航属性的值,你明确用这个集合调用saveChanges(它将不再包含'deleted'实体)。尝试只调用saveChanges()而不使用任何args。
这有意义吗?