我有一个实体库,它包含两个图书列表。图书馆保留这两本书籍非常重要。在我的图书馆实体上,我有一个从每个列表到我的图书实体的一对多的关系。同样,Book有一个关系“库”。我的数据从数据库中删除时出现了一些问题,我发现我应该设置反向关系以帮助保持数据完整性。但是,在这种情况下,Book会希望能够与我的Library实体上的每个列表建立反向关系。我怎么能做到这一点?
我天真的第一个想法是为两个列表实现关系。因此,一本书有一个关系“libraryForList1”和“libraryForList2”,因此它可以为每个关系提供一个反转。我永远不必实际引用这些属性,因为根据Core Data规范,如果我将一本书添加到其中一个库列表中,它会自动将库设置为该书籍所有者。
答案 0 :(得分:5)
您的“天真的初想”基本上是正确的:如果您的图书馆实体与图书有两对一的关系(为了清晰起见,我们称之为关系ownedBooks
和borrowedBooks
),那么您的图书实体应该具有一个反向关系(owningLibrary
和borrowingLibrary
),然后核心数据将使您的生活更轻松。
您可能还需要考虑这些关系的删除规则:如果因某种原因删除了某本书,则owningLibrary
和borrowingLibrary
的删除规则可能会 Nullify < / em> - 也就是说,两个库都会从列表中删除Book。删除仍然拥有图书的图书馆似乎是一个坏主意,因此ownedBooks
和borrowedBooks
的删除规则可能拒绝:图书馆无法删除,直到所有书籍都被计算在内(并从图书馆中删除)。