エンティティ データ モデル (EDM) の 参照整合性制約 は、リレーショナル データベースの参照整合性制約に似ています。 データベース テーブルの列 (または列) が別のテーブルの主キーを参照するのと同じ方法で、エンティティ型のプロパティ (またはプロパティ) が別のエンティティ型のエンティティ キーを参照できます。 参照されるエンティティ型は、制約の プリンシパル末尾 と呼ばれます。 プリンシパルエンドを参照するエンティティ型は、制約の 依存終了 と呼ばれます。
参照整合性制約は、2 つのエンティティ型間の 関連付けの 一部として定義されます。 参照整合性制約の定義では、次の情報を指定します。
制約の主要な目的。 (依存エンドによって参照されるエンティティ キーを持つエンティティ型)。
プリンシパルエンドのエンティティ キー。
制約の依存先。 (プリンシパル 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>