我有一个以 A 为根的继承链,其子类型为 B 和 C。接下来,我有一个像这样的实体 E:
public class E
{
public Guid Id {get; set;}
public B B {get; set;}
public C C {get; set;}
}
导航属性应映射到两个一对一关联,其中 E 是主体,B、C 是从属。这将不起作用,因为 EF 将使用 E.Id 的值作为 B 和 C 的外键,这将导致表 A 中的重复键。我使用 TPT、TPC 或 TPH 都没有关系。
如果我将它映射为两个两个一对二多关联并在 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。
任何建议如何处理这个?