ReferentialConstraint 要素 (CSDL)
概念スキーマ定義言語 (CSDL) の ReferentialConstraint 要素は、リレーショナル データベースの参照整合性制約と同様の機能を定義します。データベース テーブルの列が別のテーブルの主キーを参照できるのと同じように、エンティティ型のプロパティが別のエンティティ型のエンティティ キーを参照できます。参照されるエンティティ型は、制約のプリンシパル End と呼ばれます。プリンシパル End を参照するエンティティ型は、制約の依存 End と呼ばれます。
1 つのエンティティ型で公開される外部キーが、別のエンティティ型のプロパティを参照する場合、ReferentialConstraint 要素は 2 つのエンティティ型の間の関連付けを定義します。ReferentialConstraint 要素が、2 つのエンティティ型の関係についての情報を提供するので、マッピング仕様言語 (MSL) の対応する AssociationSetMapping 要素は不要です。外部キーを公開しない 2 つのエンティティ型の間の関連付けには、対応する AssociationSetMapping 要素が存在する必要があります。これは、関連付け情報をデータ ソースにマップするためです。
ある 1 つのエンティティ型で外部キーが公開されない場合、ReferentialConstraint 要素が定義できるのは、そのエンティティ型と別のエンティティ型との間における主キーと主キーの制約だけです。
ReferentialConstraint 要素には、次の子要素をここに示す順序で含めることができます。
Documentation (0 個または 1 個の要素)
Principal (1 個の要素)
Dependent (1 個の要素)
Annotation 要素 (0 個以上の要素)
適用可能な属性
ReferentialConstraint 要素には、任意の数の annotation 属性 (カスタム XML 属性) を適用できます。ただし、カスタム属性は CSDL 用に予約されたどの XML 名前空間にも属していない場合があります。カスタム属性の完全修飾名は一意である必要があります。
例
次の例は、ReferentialConstraint 要素を 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>