次の単純なオブジェクト モデルを確認してください。
- エンティティ
ConcreteThingyは から派生しAbstractThingyます。 - エンティティ
Ownerは最大 1 を持つことができますConcreteThingy。Owners同じものは2 つとありませんConcreteThingy。
EDMX:

DB モデル (TPT):

私が欲しいもの:
優先度の高い順に 2 つのことが必要です。
- 私が欲しいもの #1:何よりも、以下の #2 に対する最も単純で、最も簡潔で、よりクリーンなソリューションが必要です。
- 欲しいもの #2:を削除するときに、関連付けられている可能性のある を base とともに
Owner自動的に削除したい。ConcreteThingyAbstractThingy
私がやっていること:
したがって、当然のことながら、私は EDMX に行き、Owner 0 ↔ 0..1 ConcreteThingyアソシエーションでカスケード削除を有効にしました。

FK_ConcreteThingy_Ownerこれは、リレーションシップの Delete ルールをCascadeAbstractThingyに設定することでうまく機能しますが、レコードも確実に削除されるようにする制約/DB コードは見当たりません。

繰り返しますが、 を削除するOwnerと、対応するConcreteThingy(存在する場合) は削除されますが、ぶら下がっている が残りAbstractThingyます。
EF 5 を使用してこの種のタスクを実装する標準的な方法を教えてください。
SQL コードが何らかの方法で私が望むものを推測することを期待して、抽象化してみましたAbstractThingy(当然のことながら、ジェネレーターにはある種のニワトリと卵の難問がありますが、少なくとも試してみました.)
それとも、EDMX である種のスマートなお尻の参照制約を定義する必要がありますか?
それとも、DB に行って、トリガーなどのように自分でコードを書くことが期待されていますか?!?!? これは、EF とその設計ツールにとっては、ちょっとした大失敗です。
ありがとう。