2

サブタイプ 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 を削除する必要があります。

これに対処する方法はありますか?

4

1 に答える 1