实体框架 - 将子对象添加到父对象

时间:2017-03-28 14:34:27

标签: c# entity-framework ef-code-first code-first

我正在尝试与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,父级中的子级列表为空。

如何让孩子进入父母的收藏中?

谢谢!

1 个答案:

答案 0 :(得分:1)

据我所知,禁用代理创建也会影响延迟加载。延迟加载只能在代理类中工作。如果没有,那么EF在您访问属性时无法控制。

获得孩子的唯一方法是使用预先加载(使用Include())