OnDelete 要素 (CSDL)
概念スキーマ定義言語 (CSDL) の OnDelete 要素は、アソシエーションと関係のある動作を定義します。Action 属性が、アソシエーションの一方の End で Cascade に設定されている場合、その End にあるエンティティ型が削除されると、アソシエーションの他方の End で関連付けられているエンティティ型も削除されます。2 つのエンティティ型間のアソシエーションが主キーと主キーのリレーションシップである場合、アソシエーションの他方の End にあるプリンシパル オブジェクトが削除されると、OnDelete の指定にかかわらず、読み込まれた依存オブジェクトも削除されます。詳細については、「リレーションシップの定義と管理」を参照してください。削除されるのは、ObjectContext に読み込まれた関連付けられているエンティティ型だけです。
注意
OnDelete 要素が影響を及ぼすのは、アプリケーションの実行時の動作だけです。データ ソースでの動作には影響を及ぼしません。データ ソースで定義された動作は、アプリケーションで定義された動作と同じである必要があります。
OnDelete 要素には、ここに示した順序で次の子要素を含めることができます。
Documentation (0 個または 1 個の要素)
Annotation 要素 (0 個以上の要素)
適用可能な属性
OnDelete 要素に適用できる属性を次の表に示します。
属性名 |
必須 |
値 |
---|---|---|
Action |
はい |
Cascade または None。Cascade の場合、プリンシパル エンティティ型が削除されると、依存エンティティ型も削除されます。None の場合、プリンシパル エンティティ型が削除されても、依存エンティティ型は削除されません。 |
注意
Association 要素には、任意の数の annotation 属性 (カスタム XML 属性) を適用できます。ただし、カスタム属性は CSDL 用に予約されたどの XML 名前空間にも属さない場合があります。カスタム属性の完全修飾名は一意である必要があります。
例
次の例では、CustomerOrders アソシエーションを定義する Association 要素を示します。特定の Customer が削除されると、その Customer に関連付けられており ObjectContext に読み込まれている Orders もすべて削除されることが、OnDelete 要素によって示されています。
<Association Name="CustomerOrders">
<End Type="ExampleModel.Customer" Role="Customer" Multiplicity="1">
<OnDelete Action="Cascade" />
</End>
<End Type="ExampleModel.Order" Role="Order" Multiplicity="*" />
</Association>