我正在尝试与Entity Framework和Code First实现简单的一对多关系。 我以一种简单的方式设置我的父类:
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方法中创建具有Parent Id的Child时,ID在数据库中设置,但是当我获得父ID时,子列表为空。
我尝试在控制器的父级中添加子项,如下所示:
db.parent.find(child.parentId).Child.Add(child);
显然没有效果。
子对象中的父级为null,父级中的子级列表为空。
如何让孩子进入父母的收藏中?
谢谢!
答案 0 :(得分:1)
据我所知,禁用代理创建也会影响延迟加载。延迟加载只能在代理类中工作。如果没有,那么EF在您访问属性时无法控制。
获得孩子的唯一方法是使用预先加载(使用Include())