【问题标题】:Multiple inverse relationships in Core DataCore Data 中的多重逆关系
【发布时间】:2011-09-02 03:58:30
【问题描述】:

我有一个实体库,其中包含两个书籍列表。图书馆维护这两个书籍清单很重要。在我的图书馆实体上,我有一个从每个列表到我的书实体的一对多关系。同样,Book 有一个关系“库”。我在从数据库中删除数据时遇到了一些问题,我读到我应该建立反向关系以帮助数据完整性。然而,在这种情况下,一本书希望能够与我的图书馆实体上的每个列表建立反向关系。我怎样才能做到这一点?

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

【问题讨论】:

  • 请参阅 stackoverflow.com/questions/4985075/… 等。如果您的图书馆可以以两种不同的方式拥有图书,那么一本书可以以两种不同的方式属于图书馆,并且都需要单独建模。

标签: objective-c cocoa core-data nsmanagedobject


【解决方案1】:

您的“幼稚的第一个想法”基本上是正确的:如果您的 Library 实体与 Books 有两个一对多的关系(为清楚起见,我们将关系称为 ownedBooksborrowedBooks),那么您的 Book 实体应该必须-one 反向关系(owningLibraryborrowingLibrary)然后 Core Data 将使您的生活更轻松。

您可能还需要考虑这些关系的删除规则:如果一本书因某种原因被删除,owningLibraryborrowingLibrary 的删除规则很可能是 Nullify –也就是说,两个图书馆都会从他们的列表中删除这本书。删除仍然有 Books 的图书馆似乎是个坏主意,所以 ownedBooksborrowedBooks 的删除规则应该是 Deny: 在所有书籍都被计入之前,不能删除图书馆for(并从库中删除)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-07
    相关资源
    最近更新 更多