Entity framework 1-2-1关联与继承
我有一个根为A的继承链,其子类型为B和C。接下来,我有一个实体E,如下所示:Entity framework 1-2-1关联与继承,entity-framework,ef-code-first,Entity Framework,Ef Code First,我有一个根为A的继承链,其子类型为B和C。接下来,我有一个实体E,如下所示: public class E { public Guid Id {get; set;} public B B {get; set;} public C C {get; set;} } 导航属性应该映射到两个1-2-1关联,其中E是主体,B,C是从属项。这将不起作用,因为EF将使用E.Id的值作为B和C的外键,这将导致表a中出现重复的键。使用TPT、TPC或TPH并不重要 如果我将它映射为两个
public class E
{
public Guid Id {get; set;}
public B B {get; set;}
public C C {get; set;}
}
导航属性应该映射到两个1-2-1关联,其中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);
Entity().HasRequired(x=>x.B).WithMany().HasForeignKey(x=>x.BId);
Entity().HasRequired(x=>x.C).WithMany().HasForeignKey(x=>x.CId);
而级联删除不会朝正确的方向工作。即删除E.B时,应删除E.B和E.C
如何处理此问题的任何建议?EF要求每个关系(继承或关联)有一个映射列。您使用一列up进行继承,因此此列在关联关系的子类中不可用(因为您必须从子类中删除它) 您有两种选择: