核心数据正在抛给我一个循环。我有两个对象:卡片和CardSet,它们之间存在着多到多的关系,即在CardSet A中可以有卡片1、2和3,在CardSet B中可以有卡片2、4和5。
我试图设置我的删除操作,以便:
我的数据结构有两个关系,定义了这种多到多的关系: CardSet.cards和Card.cardSets。CardSet.cards的删除操作是cascade (因此,如果我删除一个CardSet,它的所有卡片都会被删除),而对于Card.cardSets的删除操作是null (因此,如果我删除一张卡,那么cardSets也不会被核化)。
但是,对于当前的设置,如果删除CardSet A,则CardSet B将保持{2、4、5} ,但卡2实际上已从数据存储中删除,这将导致试图访问CardSet时出现核心数据错误。如果卡仍然被另一个CardSet持有,我在这里应该做什么来确保它们不被删除?
发布于 2010-06-26 16:16:02
您希望将Card.cardsets设置为deny而不是null。这样,卡将不会被移除,直到它不再与任何CardSet相关。
来自核心数据编程指南
拒绝 如果在关系目的地至少有一个对象,则无法删除源对象。 例如,如果要移除某个部门,则必须确保该部门的所有员工首先转移到其他地方(或被解雇!)否则,无法删除该部门。
https://stackoverflow.com/questions/3123917
复制相似问题