参照整合性制約 (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 エンティティ型のエンティティ キーを参照します。
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>