我正在尝试实现与实体框架和代码优先的简单一对多关系。我以简单的方式设置了我的父类:
public class Parent
{
[Key]
public long ParentId { get; set; }
public ICollection<Child> Child { get; set; }
public Parent()
{
Child = new HashSet<Child>();
}
}
当然,这是一个简化版本。我的子类和父类一样简单:
public class Child
{
[Key]
public long ChildId { get; set; }
public int ParentId { get; set; }
public virtual Parent parent { get; set; }
}
我的控制器是由 EF 生成的控制器。问题是,当我在 post 方法中创建具有父 ID 的孩子时,该 ID 是在数据库中设置的,但是当我获取父级时,子项列表为空。
我尝试在控制器的父项中添加子项,如下所示:
db.parent.find(child.parentId).Child.Add(child);
这显然没有效果。
子对象中的父对象为 null,父对象中的子列表为空。
我怎样才能让孩子进入家长的收藏?
谢谢!
据我所知,禁用代理创建也会影响延迟加载。延迟加载只能在代理类中工作。如果不是,则 EF 无法控制何时访问属性。
获得孩子的唯一方法是使用预先加载(使用 Include(((