• 16-CoreData之多表关联(存储自定义数据模型)


    多表关联

    1.1-简介

    • 什么是多表关联

      • 在处理数据库的关系中,无非只有三种关系

      • 一对一:一个老师只能在一个教室上课,不可能同时在两个教室上课

      • 一对多:一个教室可以有多个学生,但一个学生只能在一个教室

      • 多对多:一门学科可以有多个学生,一个学生也可以学习多门学科

      • 本小节我们主要学习一对多的关联,通过学习一对多来举一反三其他两种关系

      1.2-如果在模型文件中对两个实体之间进行关联?

      • 给教室关联学生

    这里写图片描述

    • 给学生关联教室

      这里写图片描述

    • Type:

      • toOne:只指向一个对象(可用于某一个属性是自定义数据模型)
      • toMany:可以包含多个对象(一般是集合类型,可用于某一个属性是数组,数组中是自定义模型)
    • 添加数据

    • ClassRoom *room = [kManagedObjectContext getManagedObjectModel:@"ClassRoom"];
      
      room.roomNumber = @"1302";
      
      Student *student = [kManagedObjectContext getManagedObjectModel:@"Student"];
      student.name = @"李四";
      
      [room addStudentObject:student];
      //    student.classRoom = room;
      
      [kManagedObjectContext save];
      • 注意上面注释的那行代码,如果不写的话只是把学生加到了这间教室,但是并没有指定这个学生属于哪间教室,所以学生的classRoom属性在数据库中为null

        • 很显然这是不符合常规逻辑了,既然学生与教室已经进行了一对多的关联,那么把学生加到教室自然就应该知道这个学生属于哪间教室

        • 那么如何不写student.classRoom = room也能让学生的数据库表格中的classRoom有对应的值呢?

        • 我们需要在模型文件的关联中设置反转属性

      这里写图片描述

      1.3-删除关联

      1.3.1-简介

      • 什么是删除关联

        • 当两个表进行关联之后,删除其中一个表的数据对另一个表产生的影响

      1.3.2-如何设置删除关联

      • 点击实体对应的关系实体,右方有一个Delete Rule选项

      这里写图片描述

      • 这里以上图中设置学生的关联实体教室为例

      1.3.3-Nullify(为空)

      • 如果设置教室相对于学生的删除关联为Nullify,则表示:如果删除教室,学生并不会删除,只是学生的教室为null

      1.3.4-Cascade(级联)

      • 如果设置教室相对于学生的删除关联为Cascade,则表示:如果删除学生,则学生对应的教室也会被删除

      1.3.5-Deny(拒绝)

      • 如果设置教室相对于学生的删除关联为Deny,则表示:只要教室存在,就无法删除学生,要想删除学生,就要先删除教室

      1.4-删除关联总结

      • 模拟真实需求:

        • 删除学生,对应的教室不会被删除
        • 只要删除教室,教室里的学生就删除
        • 我该如何设置
      • 设置教室实体中的删除关联为Cascade(级联),设置学生实体中删除关系为no Action(表示删除学生不会对教室有影响)

  • 相关阅读:
    C#初级知识点整理及VS的简单使用
    C#更新SQLServer中的TimeStamp字段(时间戳) 防止同时修改一行时覆盖更新
    多线程传入参数
    ASP.NET 下载文件并继续执行JS解决方法
    C# webBrowser控件使用
    模拟操作网页 webBrowser
    ASP.net绑定文本框Enter事件到按钮 ASP.NET执行后台执行JS方法
    C#复制、粘贴文本信息到剪贴板
    组合数获取算法
    XML序列化与反序列化
  • 原文地址:https://www.cnblogs.com/edensyd/p/9200738.html
Copyright © 2020-2023  润新知