首页 文章

了解核心数据删除一对多的规则

提问于
浏览
46

关于核心数据关系删除规则,我有点模糊 . 所以如果有人能帮我回答一些关于他们的问题 .

我有实体A和B.A与B有to-Many关系,B与A有to-One关系 .

A <--- >> B

现在,如果我将删除规则设置为A到Cascade,我知道它会删除与之相关的所有B . 但是如果我将它设置为Nullify,它会将Bs设置为NIL还是将外键设置为Nil?

我到处看看从B到A的关系,我应该把它设置为Nullify吗?这只会在A处剔除“B对象”吗?或者它会否使与A相关的所有B都无效? Cascade怎么样?它会删除与A关联的所有B,还是只删除特定的B?

或者我只是对从B到A的关系使用“无操作”,这样当我删除B时,A不会发生变化,但是对B的引用将不存在?

我很担心这些,所以请原谅我的问题 .

谢谢 .

2 回答

  • 62

    如果将删除规则设置为“nullify”并删除A对象,则将删除对Bs中该对象的引用 . 逆向工作方式相同 . 如果你有级联并删除B,那么它将删除B指向的A.然后它将遵循从A到剩余B的删除规则(级联或无效) .

    您设置的规则实际上取决于您的数据模型 . 如果A是客户而B是他们的订单,那么您可以将A-> B规则设置为拒绝(如果客户有订单则阻止A被删除)或级联(删除客户时删除订单) . B-> A规则可能是“无效” . 如果删除订单,只需从客户处删除对订单的引用 .

    关系删除规则在Apple Core Data Programming Guide中描述

  • 2

    如果你设置“nullify”并删除A的对象,A的对象和后面的关系将被删除而不是B的对象 .

    例如:客户实体与订单有 nullify 关系 . 如果您从客户实体中删除客户,它只会从订单中删除客户及其后退关系 . 它不会删除客户的订单

    但如果关系是“级联”,它将删除客户及其订单 .

    如果是“否认” . 如果客户有任何订单,它甚至不会删除删除客户 .

相关问题