示例:我有一个部门和一个员工。部门与许多员工之间存在Nullify关系,而员工与一个部门存在反向关系。
现在我删除了与员工的关系。所以,让我们说营销部门不再与Joe Stevens联系了。
1)Joe Stevens在询问他的部门时是否仍然链接到营销部门?或者Core Data是自动处理这个还是“取消”那个?
2)在Employee一侧指定哪个删除规则是否重要?让我们说那是Cascade。该部门删除了与员工的关系。我认为员工的删除规则在这种情况下不相关,对吗?
答案 0 :(得分:14)
删除规则控制当删除保存规则的对象时,关系另一端的对象会发生什么。
所以:
A<-(cascade)->>B
B<<-(nullify)->A
删除A会导致删除所有相关的B.然而,删除任何一个B只会导致A忘记该特定的B.
因此,删除规则始终与其所针对的对象相关,因为目标对象是删除规则的整个点。当对象具有多个关系时尤其如此。
A<-(cascade)->>B
B<<-(nullify)->A
C<--(cascade,required)-->>B
无论A想要什么,C对象都会阻止它同时保留的任何B对象的级联删除。 (在这种情况下,A将无效。)
您不应该在实际编程方面考虑删除规则,而应考虑您尝试建模的现实世界系统。考虑一下真实系统的关系,然后设置删除规则来模仿它们。在这种情况下,我们将模仿公司的实际组织规则。