核心数据让我陷入困境。我有两个对象:Card和CardSet,它们之间存在多对多的关系,即你可以在CardSet A中使用卡1,2和3,在CardSet B中使用卡2,4和5。
我正在尝试设置我的删除操作,以便:
我的数据结构有两个关系,它们定义了这种多对多关系:CardSet.cards和Card.cardSets。 CardSet.cards的删除操作是cascade
(所以如果我删除了CardSet,它的所有卡都被删除了),我对Card.cardSets的删除操作是null
(所以我删除了一张卡,卡片也没有核心。
但是,如果我删除CardSet A,那么当前的设置,则CardSet B仍然是{2,4,5} BUT 卡2实际上已从数据存储中删除,从而导致核心数据尝试访问CardSet时出错。我应该在这做什么,以确保如果卡仍然被另一个CardSet持有,那么它们不会被删除?
答案 0 :(得分:3)
您想将Card.cardsets
设置为deny
而不是null
。这样,在卡不再与任何CardSet相关之前,卡不会被移除。
拒绝
如果至少有一个物体 关系目的地,然后 源对象无法删除。
有关 例如,如果要删除a 部门,你必须确保所有 该部门的员工是 首先转移到其他地方(或 解雇了!)否则部门 无法删除。