参照整合性制約
Entity Data Model (EDM) の "参照整合性制約" は、リレーショナル データベースの参照整合性制約と似ています。 データベース テーブルの列が別のテーブルの主キーを参照できるのと同じように、エンティティ型のプロパティが別のエンティティ型のエンティティ キーを参照できます。 参照されるエンティティ型は、制約の "プリンシパル End" と呼ばれます。 プリンシパル End を参照するエンティティ型は、制約の "依存 End" と呼ばれます。
参照整合性制約は、2 つのエンティティ型の間のアソシエーションの一部として定義されます。 参照整合性制約の定義には、次の情報を指定します。
制約のプリンシパル End。 (エンティティ キーが依存 End により参照されるエンティティ型)
プリンシパル End のエンティティ キー。
制約の依存 End。 (プリンシパル End のエンティティ キーを参照するプロパティを持つエンティティ型)
依存 End の参照プロパティ。
EDM の参照整合性制約の目的は、常に有効なアソシエーションが存在することを確認するためです。 詳しくは、「外部キーのプロパティ」をご覧ください。
例
下のダイアグラムは、WrittenBy
および PublishedBy
という 2 つのアソシエーションの概念モデルを示しています。 Book
エンティティ型には、PublisherId
というプロパティがあります。Publisher
アソシエーションに参照整合性制約を定義するときに、このプロパティは PublishedBy
エンティティ型のエンティティ キーを参照します。
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>