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

时间:2016-10-12 18:22:43

标签: core-data

我对核心数据模型和级联删除规则有疑问。

我的核心数据模型就是这个:

Core Data Model

正如您所看到的,用户实体与订单实体之间存在“To To Many”关系。 Orders Entity还有一个名为Cuisines的父实体,因为每个Order都需要来自可用的美食列表。

用户到订单关系删除规则是级联(反向无效),因为如果删除用户对象,我希望删除所有订单。

我的问题是,如果我删除用户,美食实体会发生什么?

菜单应该适用于为其他用户下的所有订单,因此必须坚持。它会被删除吗?

如果是,我该如何创建我的模型并设置删除规则以避免这种情况?

1 个答案:

答案 0 :(得分:0)

struct RowContent { //TODO: needs better name let title: String var description: String } var rows = [RowContent]() func transferData(descriptionTranferred: String, identifier: String) { let rowsToUpdate = rows.filter{ $0.title == identifier } if rowsToUpdate.isEmpty { print("No rows to update.") return } for var row in rowsToUpdate { row.description = descriptionTranferred } } 指定为Cuisines的父实体意味着每个Orders对象 a Orders - 尽管是特定的&#34}。类型" Cuisine。每个Cuisine都有三个属性:OrdernumOfOrdersrating。当您删除name(虽然通过级联规则)时,您将删除一个具有所有三个属性的对象 - 没有要删除的单独Order对象。

但是你希望每个订单都是来自的可用美食列表。因此,请使用关系替换CuisinesOrders之间的父/子实体链接。每个Cuisines都可以与几个不同的Cuisine相关联,因此这种关系可能会很多。相反,每个Orders仅涉及一个Order,因此反比关系将为1。当您删除Cuisine时,您希望保留相关的Order(以便在其他Cuisines中使用),以便删除规则为" nullify"。