Breeze 拒绝更改不会从父项中删除实体

Breeze 拒绝更改不会从父项中删除实体,breeze,Breeze,创建新实体并设置其导航属性,然后拒绝父实体对空白实体所做的更改时。在拒绝更改之前,是否需要从父级显式删除新实体?我没有显式地将其添加到父实体,我只是设置了新实体的父实体id。拒绝对新实体的更改只会丢弃该实体-使其entityState“分离”。在这种情况下,任何依附于父母的孩子实际上都会陷入困境,即他们没有父母 换句话说,Breeze不会因为拒绝父对象的更改而对任何子对象调用rejectChanges。这是故意的 因此,你最好的办法就是给孩子们打电话。如果它们本身是新实体,它们也将分离,否则它们

创建新实体并设置其导航属性,然后拒绝父实体对空白实体所做的更改时。在拒绝更改之前,是否需要从父级显式删除新实体?我没有显式地将其添加到父实体,我只是设置了新实体的父实体id。

拒绝对新实体的更改只会丢弃该实体-使其entityState“分离”。在这种情况下,任何依附于父母的孩子实际上都会陷入困境,即他们没有父母

换句话说,Breeze不会因为拒绝父对象的更改而对任何子对象调用rejectChanges。这是故意的

因此,你最好的办法就是给孩子们打电话。如果它们本身是新实体,它们也将分离,否则它们的父实体将恢复为以前的父实体

请注意,可以使用EntityManager.getEntities方法返回指定EntityType和EntityState的所有实体。这在确定要“回滚”的实体时非常有用


请参见

拒绝对新实体的更改只会丢弃该实体-使其entityState“分离”。在这种情况下,任何依附于父母的孩子实际上都会陷入困境,即他们没有父母

换句话说,Breeze不会因为拒绝父对象的更改而对任何子对象调用rejectChanges。这是故意的

因此,你最好的办法就是给孩子们打电话。如果它们本身是新实体,它们也将分离,否则它们的父实体将恢复为以前的父实体

请注意,可以使用EntityManager.getEntities方法返回指定EntityType和EntityState的所有实体。这在确定要“回滚”的实体时非常有用


请参阅

谢谢,抱歉,回复时间太长。您的回答帮了大忙。@Jay Trab,那么,当用户导航/离开屏幕时,是否有自动重置Breeze客户端实体管理器的指导原则?我发现我需要在屏幕组件中放置重复代码,这样,如果用户单击编辑记录,更改字段,然后单击取消。。。我需要确保EntityManager忘记任何挂起的模型更改(因为字段输入直接绑定到实体属性)。或者,稍后调用.saveChanges时,Breeze也会尝试包含以前的更改。您可以使用EntityManager.rejectChanges清除对所有内容的任何更改,或者使用EntityAspect.rejectChanges拒绝单个实体的更改。i、 e.myEntity.entityAspect.rejectChanges()谢谢,很抱歉回复时间太长。您的回答帮了大忙。@Jay Trab,那么,当用户导航/离开屏幕时,是否有自动重置Breeze客户端实体管理器的指导原则?我发现我需要在屏幕组件中放置重复代码,这样,如果用户单击编辑记录,更改字段,然后单击取消。。。我需要确保EntityManager忘记任何挂起的模型更改(因为字段输入直接绑定到实体属性)。或者,稍后调用.saveChanges时,Breeze也会尝试包含以前的更改。您可以使用EntityManager.rejectChanges清除对所有内容的任何更改,或者使用EntityAspect.rejectChanges拒绝单个实体的更改。i、 e.myEntity.entityAspect.rejectChanges()