• Entity Framework Relationships & Navigation Properties


    相关链接:Relationships and Navigation Properties

    详细内容请点击相关链接查看具体信息。在这里,只有个人认为的重点,内容均摘自以上链接中。

    一般数据库表之间关系有三种:一对一、一对多、多对多。

    一对一。

    主键还用作外键,两个表都没有单独的外键列。

    一对多。

    外键是在表示关系多端的表上定义的。

    下图显示的两个表存在一对多关系。

    Course 表为依赖表,因为它包含 DepartmentID 列,该列链接到 Department 表。

    Screenshot of a foreign key constraint definied in a database

    多对多。

    设计定义第三个表(也成为接合或联接表),主键由来自两个相关表的外键组成。

    在实体框架中,实体可以通过关联(关系)与其他实体相关。

    每个关系都包含两端,它们描述关系中两个实体的实体类型以及类型的多重性(一、零或一、多)。

    关系可由引用约束控制,该引用约束描述了关系中的哪端为 Principal Role 以及哪端为 Dependent Role。

    导航属性为在两个实体类型间导航关联提供了一种方式。

    针对对象参与到其中的每个关系,各对象均可以具有导航属性。

    使用导航属性,可以在两个方向上导航和管理关系,返回引用对象(如果多重性为一或者零或一)或集合(如果多重性为多)。

    也可以选择使用单向导航,在这种情况下,只对参与关系的一种而不是两种类型定义导航属性。

    建议在映射到数据库中外键的模型中包含属性。

    加入了外键属性,您就可以通过修改依赖对象的外键值来创建或更改关系。此类关联称为外键关联。

    在 N 层应用程序中,使用外键更为重要。

    请注意,在 1 对 1 或 1 对 0..1 关系中,没有单独的外键列,主键属性用作外键并且始终包含在模型中。

    当模型中不包含外键列时,关联信息将作为独立对象管理。关系是通过对象引用而不是外键属性跟踪的。这种关联类型称为“独立关联”

    修改独立关联 的最常见方式是修改为参与关联的每个实体生成的导航属性。

    可以在您的模型中选择使用一种或两种类型的关联。不过,如果多对多关系是通过只包含外键的联接表连接的纯粹关系,EF 将使用独立关联来管理这样的多对多关系。  

    下图所示为使用实体框架设计器创建的概念模型。该模型包含两个参与一对多关系的实体。这两个实体都有导航属性。Course 为依赖实体,它定义了DepartmentID 外键属性。

    EF 设计器中定义的关系屏幕快照

    下图所示为使用 Code First 创建的相同模型。

    使用 Code First 定义的关系屏幕快照

  • 相关阅读:
    模板语法 DTL(Django Template Language )
    django基础
    day1,基本标签总结
    聚合函数
    day1
    day 3 定时任务
    day 4 tar
    day 6
    day1 mysql
    day 6
  • 原文地址:https://www.cnblogs.com/Currention/p/5288290.html
Copyright © 2020-2023  润新知