核心数据模型级联删除和父实体
Posted
技术标签:
【中文标题】核心数据模型级联删除和父实体【英文标题】:Core Data Model Cascade Delete and Parent Entity 【发布时间】:2016-10-12 18:22:42 【问题描述】:我有一个关于核心数据模型和级联删除规则的问题。
我的核心数据模型是这个:
如您所见,用户实体与订单实体具有“多对多”关系。 此外,Orders 实体有一个名为 Cuisines 的父实体,因为每个 Orders 都需要来自可用的 Cuisines 列表。
用户与订单关系删除规则是级联(反之为无效),因为如果删除用户对象,我希望删除所有订单。
我的问题是,如果我删除用户,美食实体会发生什么情况?
对于为其他用户下的所有订单,美食也应该可用,因此它必须持续存在。也会被删除吗?
如果是,我应该如何创建我的模型并设置删除规则以避免这种情况?
【问题讨论】:
【参考方案1】:将Cuisines
指定为Orders
的父实体意味着每个Orders
对象是 Cuisine
- 尽管是Cuisine
的特定“类型”。每个Order
具有三个属性:numOfOrders
、rating
和name
。当您删除 Order
(尽管通过级联规则)时,您将删除一个具有所有三个属性的对象 - 没有要删除的单独的 Cuisines
对象。
但您希望每个订单来自可用美食列表。所以用关系替换Orders
和Cuisines
之间的父/子实体链接。每个Cuisine
可以与几个不同的Orders
相关联,因此关系将是对多的。相反,每个Order
只与一个Cuisine
相关,因此反向关系将是一对一。当您删除Order
时,您希望相关的Cuisines
保留(用于其他Orders
),因此删除规则将是“无效”。
【讨论】:
谢谢!那清除了它。我正在考虑按照您的建议做,只是想确定这是正确的方法。以上是关于核心数据模型级联删除和父实体的主要内容,如果未能解决你的问题,请参考以下文章