代码之家  ›  专栏  ›  技术社区  ›  Hoang Pham

反关系警告-询问使用反关系的实践

  •  4
  • Hoang Pham  · 技术社区  · 15 年前

    我有一个包含特定订单信息的订单表(它什么时候开始,有多少人等等),这个订单表与菜单项表有很多关系。我称这种关系为“订单项目”。

    编译器向我发出警告,“order.ordereditems--对多关系没有反向:这是一个高级设置(对于特定关系,任何对象都不能位于多个目标中)”

    你通常如何处理逆反关系?我是否需要在菜单项上创建一个新的关系以指向订单,并将反向关系设置为“ordereditems”?(实际上,我没有理由在菜单项表中保存该数据)

    有人可以向我解释为什么,或者至少,向我指出我需要在菜单项表上创建反向关系的原因。

    事先谢谢,

    2 回复  |  直到 15 年前
        1
  •  18
  •   Andrew Johnson    15 年前

    我也遇到了这个警告和问题!这是你需要知道的…

    假设你有两张桌子——汽车和司机。你定义了一对一的关系——一辆车对一个司机,但没有相反的关系。

    因此,现在,如果您创建一辆汽车并为其分配一个驱动程序,如果您稍后删除该驱动程序,然后尝试访问car.driver,您的程序将崩溃。car.driver不会是零-它会破坏你的程序。

    所以,如果你不创建一个反转,你就不能检查是否有什么是零,你甚至不能安全地使用car.driver,如果驱动程序被删除。

    我不喜欢Xcode的设置。它应该默认为反向的,并且是一个痛苦的屁股来改变它。

    设置反转很简单。只需在Xcode中打开XCDataModel,单击现有关系,然后选中反转框。

        2
  •  4
  •   gerry3    15 年前

    通常,您应该始终添加反向关系。

    不要根据将要生成的表来考虑核心数据。事实上,核心数据足够智能,不会将数据放在多个表中。

    专注于设计满足您需求的数据模型(并添加反向关系)。