サブタイプ B と C を持つ A をルートとする継承チェーンがあります。次に、次のようなエンティティ E があります。
public class E
{
public Guid Id {get; set;}
public B B {get; set;}
public C C {get; set;}
}
ナビゲーション プロパティは、E がプリンシパルで B、C が従属である 2 つの one-2-one アソシエーションにマップする必要があります。EF は E.Id の値を B と C の外部キーとして使用するため、これは機能しません。その結果、テーブル A でキーが重複します。TPT、TPC、または TPH を使用するかどうかは問題ではありません。
2 つの 1-2-many アソシエーションを 2 つマップし、E で個別の外部キーを使用するとします。つまり、次のようにマッピングします。
Entity<E>().HasRequired(x=>x.B).WithMany().HasForeignKey(x=>x.BId);
Entity<E>().HasRequired(x=>x.C).WithMany().HasForeignKey(x=>x.CId);
カスケード削除よりも正しい方向には機能しません。つまり、e を削除するときは EB と EC を削除する必要があります。
これに対処する方法はありますか?