首页 文章

核心数据中的多个反向关系

提问于
浏览
4

我有一个实体库,它包含两个书籍列表 . 图书馆保留这两本书籍非常重要 . 在我的图书馆实体上,我有一个从每个列表到我的图书实体的一对多的关系 . 同样,Book有一个关系“库” . 我的数据从数据库中删除时出现了一些问题,我发现我应该设置反向关系以帮助保持数据完整性 . 但是,在这种情况下,Book会希望能够与我的Library实体上的每个列表 Build 反向关系 . 我怎么能做到这一点?

我天真的第一个想法是为两个列表实现关系 . 因此,一本书有一个关系“libraryForList1”和“libraryForList2”,因此它可以为每个关系提供一个反转 . 我永远不必实际引用这些属性,因为根据Core Data规范,如果我将一本书添加到其中一个库列表中,它会自动将库设置为该书籍所有者 .

1 回答

  • 5

    你的"naive first thought"本质上是正确的:如果你的图书馆实体与书籍有两对一的关系(为了清楚起见,我们称之为关系 ownedBooksborrowedBooks ),那么你的图书实体应该有一个反向关系( owningLibraryborrowingLibrary ),然后核心数据将使您的生活更轻松 .

    您可能还需要考虑关于这些关系的删除规则:如果由于某种原因删除了Book,则 owningLibraryborrowingLibrary 的删除规则可能是Nullify - 也就是说,两个库都会从其列表中删除Book . 删除仍然有书籍的图书馆似乎是一个坏主意,所以也许 ownedBooksborrowedBooks 的删除规则应该是拒绝:在图书全部计入(并从图书馆中删除)之前,不能删除图书馆 .

相关问题