您好我遇到了抽象基类与其实现之间的父/子关系问题
public class SuperParent
{
public ICollection<Parent> ParentList { get; set; }
}
public abstract class Parent
{
public int Id { get; set; }
public string Title { get; set; }
}
public abstract class ParentExtended : Parent
{
public ICollection<ChildClass> ChildClassList { get; set; }
}
public class RealClass : ParentExtended
{
}
public class ChildClass
{
public int Id { get; set; }
public Parent Parent { get; set; }
}
DBContext如下所示:
public DbSet<SuperParent> SuperParents { get; set; }
public DbSet<Parent> Parents { get; set; }
public DbSet<ChildClass> ChildClasses { get; set; }
示例代码
SuperParent sp = new SuperParent();
sp.ParentList = new List<Parent>();
RealClass parent = new RealClass();
parent.ChildClassList = new List<ChildClass>();
parent.ChildClassList.Add(new ChildClass());
sp.ParentList.Add(parent);
带有列
的数据库表ChildClass中的结果其中ParentId始终为null,parentExtendedId填充了正确的Id但不需要。
我的问题是这样的方法,我怎样才能将子类Parent作为父级而不是ParentExtended
答案 0 :(得分:1)
我自己找到了答案,这很容易:) 使用数据注释在抽象类ParentExtended中装饰子列表,该数据注释告诉类子内的反向属性是什么。
所以在我的例子中:
public abstract class ParentExtended : Parent
{
[InverseProperty("Parent")]
public ICollection<ChildClass> ChildClassList { get; set; }
}
创建一个指向Realclass的指针,但是在名为Parent
的变量中