核心数据模型级联删除和父实体

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 具有三个属性:numOfOrdersratingname。当您删除 Order(尽管通过级联规则)时,您将删除一个具有所有三个属性的对象 - 没有要删除的单独的 Cuisines 对象。

但您希望每个订单来自可用美食列表。所以用关系替换OrdersCuisines 之间的父/子实体链接。每个Cuisine 可以与几个不同的Orders 相关联,因此关系将是对多的。相反,每个Order 只与一个Cuisine 相关,因此反向关系将是一对一。当您删除Order 时,您希望相关的Cuisines 保留(用于其他Orders),因此删除规则将是“无效”。

【讨论】:

谢谢!那清除了它。我正在考虑按照您的建议做,只是想确定这是正确的方法。

以上是关于核心数据模型级联删除和父实体的主要内容,如果未能解决你的问题,请参考以下文章

我的核心数据数据模型中的一个实体没有被删除

核心数据级联删除不可靠?

核心数据模型迁移步骤

PythonDjango数据模型级联删除级联更新ER图导出等

使用实体框架中的可选记录级联删除

更改未保存在核心数据模型中(例如删除对象)