参照整合性制約

Entity Data Model (EDM) の "参照整合性制約" は、リレーショナル データベースの参照整合性制約と似ています。 データベース テーブルの列が別のテーブルの主キーを参照できるのと同じように、エンティティ型プロパティが別のエンティティ型のエンティティ キーを参照できます。 参照されるエンティティ型は、制約の "プリンシパル End" と呼ばれます。 プリンシパル End を参照するエンティティ型は、制約の "依存 End" と呼ばれます。

参照整合性制約は、2 つのエンティティ型の間のアソシエーションの一部として定義されます。 参照整合性制約の定義には、次の情報を指定します。

  • 制約のプリンシパル End。 (エンティティ キーが依存 End により参照されるエンティティ型)

  • プリンシパル End のエンティティ キー。

  • 制約の依存 End。 (プリンシパル End のエンティティ キーを参照するプロパティを持つエンティティ型)

  • 依存 End の参照プロパティ。

EDM の参照整合性制約の目的は、常に有効なアソシエーションが存在することを確認するためです。 詳しくは、「外部キーのプロパティ」をご覧ください。

下のダイアグラムは、WrittenBy および PublishedBy という 2 つのアソシエーションの概念モデルを示しています。 Book エンティティ型には、PublisherId というプロパティがあります。Publisher アソシエーションに参照整合性制約を定義するときに、このプロパティは PublishedBy エンティティ型のエンティティ キーを参照します。

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>

関連項目