我有以下基类(我省略了构造函数)
public class ClassA
{
public int ClassAId {get;set;}
}
从中派生多个类。其中,有两个类可以容纳ClassB列表
public class ClassA1:ClassA
{
public virtual List<ClassB> ClassBList {get;set;}
}
public class ClassA2:ClassA
{
public virtual List<ClassB> ClassBList {get;set;}
}
public class B
{
public int ClassBId{get;set;}
public int ClassAId {get;set;}
public ClassA ClassA {get;set;
}
请注意,虽然看起来我不需要将ClassA1和ClassA2分开,但是为了简单起见,还有很多其他的事情我会选择省略。
我现在无法配置实体模型。如果我只有一个持有ClassB列表的ClassA,我会做
modelBuilder.Entity<ClassA>(entity =>
{
entity.HasKey(e => e.ClassAId);
entity.HasMany(a => a.ClassBList)
.WithOne(b => b.ClassA)
.HasForeignKey(d => d.ClassAId)
.OnDelete(DeleteBehavior.Cascade)
}
modelBuilder.Entity<ClassB>(entity =>
{
entity.HasKey(e => e.ClassBId);
}
但我无法得到类似于我希望ClassA1和ClassA2链接到ClassB的情况。我尝试使用HasMany / HasOne对ClassA1和ClassA2使用类似的东西(仅显示ClassA1,我对ClassA2也这样做)
modelBuilder.Entity<ClassA1>(entity =>
{
entity.HasMany(a => a.ClassBList)
.WithOne(b => (ClassA1)b.ClassA)
.HasForeignKey(d => d.ClassAId)
.OnDelete(DeleteBehavior.Cascade)
}
它创建了数据库,但在我尝试将ClassB实际添加到ClassA1或ClassA2时抛出了一个转换错误。我正在使用Entity Core 2.0。