Share via


参照整合性制約 (Entity Data Model)

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

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

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

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

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

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

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

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

参照

概念

Entity Data Model キーの概念
Entity Data Model