mysql中nullify_Core Data 数据库 No Action ,Nullify , Cascade , Deny 用法

假设现在有两个实体,Product 和Manufacturer , 产品和制造商,一个产品只有一个制造商,一个制造商则可能会生产多个商品。这时候制造商和产品则是一对多的关系。

621a41c08669

制造商.jpeg

制造商有 address 和 name 两个属性

621a41c08669

产品.jpeg

产品有name, price ,time 三个属性。

621a41c08669

关系.jpeg

产品与制造商是多对一的关系。

有过java开发经验的人看到Core Data ,可能会感觉到跟java 的 hibernate框架特别相似,事实上也确实有很多相通之处。但是hibernate使用起来要比Core Data 复杂的多。废话不多说。进入正题

使用Core Data 建立实体间关系的时候,点击实体关系,右侧属性检查器面板会出现关系的 Delete Rule 属性。

具体有 No Action ,Nullify , Cascade , Deny 四个属性。

一, No Action

No Action表示框架不对关系的目标对象做任何操作。我不鼓励使用No Action, 因为该选项把模型一致行动工作留给了我们开发人员。Core Data一部分能力就是他的管理数据模型一致性的能力。拿我们开篇Product实例和Manufacturer实例来讲,如果把Product 的 manufacturer关系的Delete Role 设置为No Action。现在我们删除了一个Product实例,和他相关的Manufacturer 对象仍然显示这个已经不存在的产品相关。这个时候维护模型一致性的工作就留到了我们手中,我们得再手动的删除Manufacturer中这个无效的产品。

二,Nullify

Nullify选项是默认选项, 他自动消除反向关系。该选项只对反向关系是可选类型的关系起作用。假设我们将Product 的 manufacturer关系的Delete Role 由 No Action 改为了Nullify。在次情况下,如果删除了一个产品,该产品将不会再出现在Manufacturer的产品关系中。

三, Cascade

Cascade 选项级联删除关系的源和目标,在当前情况下,对于Manufacturer对象的products关系,如果此关系的Delete Rule 被设置为Cascade, 则删除一个制造商时将删除该制造商的所有商品。对于一对多的关系中,我们可以使用级联关系,一的一方被删除。则多的一方也级联删除。相反,在多对一的关系中,则一般不能使用级联关系,删除多的一方的时候一定不能直接级联删除一的一方。

四,Deny

Deny 选项避免删除所有目标对象。对于Manufacture对象的products关系,如果删除仍然有产品的制造商。Core Data讲引发一系列的错误。这种情况下,删除制造商之前应该手动删除和该制造商相关的所有产品。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值