在我的核心数据模型中,我有一个具有几个多对多关系的 Profile 实体。其中之一是“寻找”。许多配置文件可以寻找许多不同的东西。
Core Data 中的关系将其删除规则设置为 Nullify。我想要发生的是,当一个配置文件被删除时,所有正在寻找的条目都不会受到影响,而当一个正在寻找的条目被删除时,它应该从每个人的配置文件中删除。
这似乎我应该对 Profile 和 Find For 之间的关系的两个方向都执行 No Action,但是通过谷歌搜索和阅读文档,我不确定这是正确的,实际上 No Action 似乎是你几乎会做的事情除非您进行大量优化,否则永远不想使用。这是文档:
无操作 对关系目标处的对象不执行任何操作。例如,如果您删除一个部门,请让所有员工保持原样,即使他们仍然认为自己属于该部门。
使用无操作规则的原因不太明显,因为如果使用它,您可能会使对象图处于不一致的状态(员工与已删除的部门有关系)。
如果您使用 No Action 规则,则由您来确保保持对象图的一致性。您负责将任何反向关系设置为有意义的值。在您具有一对多关系并且目的地可能有大量对象的情况下,这可能会有所帮助。
所以我觉得我应该改用 Nullify(我目前正在使用),但 Nullify 的文档说:
Nullify 将目标对象的反向关系设置为空。例如,如果您删除一个部门,请将所有当前成员的部门设置为空。仅当员工的部门关系是可选的,或者您确保在下一次保存操作之前为每个员工设置了一个新部门时,这才有意义。
现在,正如所写,这似乎暗示如果您删除一个配置文件,则与该配置文件关联的每个查找都将与配置文件的关系清空,即从所有配置文件中删除。
在这种情况下,正确的做法是什么?