引用完整性约束

实体数据模型(EDM)中的 引用完整性约束 类似于关系数据库中的引用完整性约束。 与数据库表中的一个(或多个)列可以引用另一个表的主键相同,实体类型的一个(或多个)属性可以引用另一个实体类型的实体键。 引用的实体类型称为约束的 主体端 。 引用主体端的实体类型称为约束的 依赖端

引用完整性约束定义为两个实体类型 之间的关联 的组成部分。 引用完整性约束的定义指定以下信息:

  • 约束的主要目的。 (一个实体类型,其实体键由依赖端引用。)

  • 主体端的实体键。

  • 约束的从属端。 (一个实体类型,它的一个或多个属性引用主体端的实体键。)

  • 依赖端的一个或多个引用属性。

EDM 中的引用完整性约束的目的是确保始终存在有效的关联。 有关详细信息,请参阅 外键属性

示例:

下图显示了一个概念模型,其中包含两个关联: WrittenByPublishedBy。 当您在PublishedBy关联上定义参照完整性约束时,Book实体类型具有一个属性PublisherId,它引用了Publisher实体类型的实体键。

RefConstraintModel

ADO.NET Entity Framework 使用称为概念架构定义语言(CSDL)的特定于域的语言(DSL)来定义概念模型。 下面的 CSDL 为上图所示的概念模型中的 PublishedBy 关联定义了一个引用完整性约束。

<Association Name="PublishedBy">
  <End Type="BooksModel.Book" Role="Book" Multiplicity="*" >
  </End>
  <End Type="BooksModel.Publisher" Role="Publisher" Multiplicity="1" />
  <ReferentialConstraint>
    <Principal Role="Publisher">
      <PropertyRef Name="Id" />
    </Principal>
    <Dependent Role="Book">
      <PropertyRef Name="PublisherId" />
    </Dependent>
  </ReferentialConstraint>
</Association>

另请参阅