次の方法で共有


参照整合性制約

エンティティ データ モデル (EDM) の 参照整合性制約 は、リレーショナル データベースの参照整合性制約に似ています。 データベース テーブルの列 (または列) が別のテーブルの主キーを参照するのと同じ方法で、エンティティ型プロパティ (またはプロパティ) が別のエンティティ型のエンティティ キーを参照できます。 参照されるエンティティ型は、制約の プリンシパル末尾 と呼ばれます。 プリンシパルエンドを参照するエンティティ型は、制約の 依存終了 と呼ばれます。

参照整合性制約は、2 つのエンティティ型間の 関連付けの 一部として定義されます。 参照整合性制約の定義では、次の情報を指定します。

  • 制約の主要な目的。 (依存エンドによって参照されるエンティティ キーを持つエンティティ型)。

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

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

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

EDM の参照整合性制約の目的は、有効な関連付けが常に存在することを保証することです。 詳細については、「 外部キー プロパティ」を参照してください。

次の図は、 WrittenByPublishedByの 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>

こちらも参照ください