End 要素 (CSDL)
概念スキーマ定義言語 (CSDL: Conceptual Schema Definition Language) の End 要素は、Association 要素または AssociationSet 要素の子にすることができます。それぞれの場合において、End 要素の役割は異なっており、該当する属性も異なります。
Association 要素の子としての End 要素
End 要素 (Association 要素の子として) は、アソシエーションの一方の End にあるエンティティ型と、アソシエーションのその End に存在できるエンティティ型のインスタンス数を特定します。アソシエーション End はアソシエーションの一部として定義され、アソシエーションには必ず 2 つのアソシエーション End が必要です。アソシエーションの 1 つの End にあるエンティティ型インスタンスには、ナビゲーション プロパティまたは外部キーからアクセスできます (エンティティ型で公開されている場合)。詳細については、「NavigationProperty 要素」、「ReferentialConstraint 要素」、および「リレーションシップの定義と管理」を参照してください。
End 要素には、ここに示した順序で次の子要素を含めることができます。
Documentation (0 個または 1 個の要素)
OnDelete (0 個または 1 個の要素)
Annotation 要素 (0 個以上の要素)
適用可能な属性
End 要素が Association 要素の子である場合に適用できる属性を次の表に示します。
属性名 |
必須 |
値 |
---|---|---|
Type |
はい |
アソシエーションの一方の End のエンティティ型の名前。 |
Role |
いいえ |
アソシエーション End の名前。名前が指定されない場合、アソシエーション End のエンティティ型の名前が使用されます。 |
Multiplicity |
有効 |
アソシエーション End に存在できるエンティティ型のインスタンス数に応じて、1、0..1、または * のいずれか。
|
注意
End 要素には、任意の数の annotation 属性 (カスタム XML 属性) を適用できます。ただし、カスタム属性は CSDL 用に予約されたどの XML 名前空間にも属さない場合があります。カスタム属性の完全修飾名は一意である必要があります。
例
次の例は、CustomerOrders アソシエーションを定義する Association 要素を示します。アソシエーションの各 End の Multiplicity 値は、多くの Orders を 1 個の Customer に関連付けることができる一方で、Order に関連付けることができる Customer は 1 個だけであることを示しています。さらに、特定の Customer が削除されると、その Customer に関連付けられており ObjectContext に読み込まれている Orders もすべて削除されることが、OnDelete 要素によって示されています。
<Association Name="CustomerOrders">
<End Type="ExampleModel.Customer" Role="Customer" Multiplicity="1" />
<End Type="ExampleModel.Order" Role="Order" Multiplicity="*">
<OnDelete Action="Cascade" />
</End>
</Association>
AssociationSet 要素の子としての End 要素
End 要素は、アソシエーション セットの 1 つの End を指定します。AssociationSet 要素には、2 個の End 要素が含まれている必要があります。End 要素に格納されている情報は、アソシエーション セットをデータ ソースにマップするときに使用されます。詳細については、「AssociationSetMapping 要素 (MSL)」および「EndProperty 要素 (MSL)」を参照してください。
End 要素には、ここに示した順序で次の子要素を含めることができます。
Documentation (0 個または 1 個の要素)
Annotation 要素 (0 個以上の要素)
注意
Annotation 要素は、それ以外のすべての子要素より後に指定する必要があります。annotation 要素は、.NET Framework Version 4 以降を対象としたアプリケーションの概念モデルでのみ使用できます。このようなモデルの XML 名前空間は、https://schemas.microsoft.com/ado/2008/09/edm です。
適用可能な属性
End 要素が AssociationSet 要素の子である場合に適用できる属性を次の表に示します。
属性名 |
必須 |
値 |
---|---|---|
EntitySet |
はい |
親 AssociationSet 要素の 1 つの End を定義する EntitySet 要素の名前。EntitySet 要素は、親 AssociationSet 要素と同じエンティティ コンテナー内で定義されている必要があります。 |
Role |
いいえ |
アソシエーション セット End の名前。Role 属性が使用されない場合、アソシエーション セット End の名前がエンティティ セット名になります。 |
注意
End 要素には、任意数の annotation 属性 (カスタム XML 属性) を適用できます。ただし、カスタム属性は CSDL 用に予約されたどの XML 名前空間にも属さない場合があります。カスタム属性の完全修飾名は一意である必要があります。
例
次の例では、2 個の AssociationSet 要素を持つ EntityContainer 要素を示します。各 AssociationSet 要素には End 要素が 2 個あります。
<EntityContainer Name="BooksContainer" >
<EntitySet Name="Books" EntityType="BooksModel.Book" />
<EntitySet Name="Publishers" EntityType="BooksModel.Publisher" />
<EntitySet Name="Authors" EntityType="BooksModel.Author" />
<AssociationSet Name="PublishedBy" Association="BooksModel.PublishedBy">
<End Role="Book" EntitySet="Books" />
<End Role="Publisher" EntitySet="Publishers" />
</AssociationSet>
<AssociationSet Name="WrittenBy" Association="BooksModel.WrittenBy">
<End Role="Book" EntitySet="Books" />
<End Role="Author" EntitySet="Authors" />
</AssociationSet>
</EntityContainer>