删除具有一对多关系的实体

Posted

技术标签:

【中文标题】删除具有一对多关系的实体【英文标题】:Deleting Entities with one-to-many relationships 【发布时间】:2015-05-06 02:19:21 【问题描述】:

我正在尝试找出针对我的特定场景处理实体删除的最佳方法。我有三个实体:Item、Purchase 和 PurchaseJoin。

Purchase:与 PurchaseJoin 具有一对多的关系。

Item:与 PurchaseJoin 具有一对多关系。

所以我不会删除任何购买,它们的历史将永远保留。项目将被删除。商品有价格和名称,如果商品被删除,我需要这些属性来跟踪。

什么是删除项目的最佳方法,但仍保留有关该项目所属的任何购买的相关信息?

我的想法是在删除时将 PurchaseJoin 与 Item 关系设为 NULLIFY,但将 Item 的属性添加到 PurchaseJoin。

【问题讨论】:

【参考方案1】:

点击关系属性,在 Inspector 部分点击 Data model Inspector-> Delete Rule

将删除规则设置为无操作

这可能会达到您的目的

【讨论】:

当这个选项被选中时,Item会被删除,但关系会保持不变?这是否意味着关系仍然能够访问已删除项目的属性,或者它们实际上已被删除?

以上是关于删除具有一对多关系的实体的主要内容,如果未能解决你的问题,请参考以下文章

iOS:删除核心数据中具有一对多关系的实体

删除与基于视图的实体具有一对多关联的实体对象

使用核心数据,当一对多关系低于最小计数时,是一种自动删除实体的方法吗?

核心数据 - 具有一对多关系的实体正在检索除“关系”实体之外的所有实体对象的属性

映射“一对多”关系的正确方法。在多个实体中具有相同关系时

如何基于另一个实体的一对多关系访问 CoreData 实体?