使用子实体添加,删除或更新对象

时间:2016-02-05 05:55:02

标签: entity-framework linq asp-classic

我有一个包含child的集合的父模型,现在这个孩子有一个childofchild的集合,它是一个复杂的模型。 我想添加,更新或删除Child或ChildOfChild实体,如果我的我的父模型,因为EF 5有很多变化或新的方法我已经在网上搜索过,发现什么都不能解决我这个问题。

现在EF 7,lineQ或扩展库中是否有一个好的方法可以轻松或干净地更新它。 我的糟糕解决方案是多次检查的预告......

public class Parent
{
    public Parent()
    {
        this.Children = new List<Child>();
    }

    public int Id { get; set; }

    public virtual ICollection<Child> Children { get; set; }
}

public class Child
{
    public int Id { get; set; }

    public int ParentId { get; set; }

public virtual ICollection<ChildOfChild> Children { get; set; }


    public string Data { get; set; }
}

public class ChildOfChild
{
    public int Id { get; set; }


    public string Data { get; set; }
}

1 个答案:

答案 0 :(得分:0)

您的模型是多余的,足以只使用一种模型:

<强>型号:

public class Entity
{
    public int ID { get; set; }
    public string Data { get; set; }

    public virtual Entity Parent { get; set; }
    public int? ParentID { get; set; }

    public virtual ICollection<Entity> Children { get; set; }
}

代码示例:

var dc = new DataContext();
var parent = dc.Entitys.Add(new Entity { Data = "Parent" });
dc.SaveChanges();

dc.Entitys.Add(new Entity { Data = "Child1", ParentID = parent.ID });
dc.Entitys.Add(new Entity { Data = "Child1", ParentID = parent.ID });
var child = dc.Entitys.Add(new Entity { Data = "Child1", ParentID = parent.ID });
dc.SaveChanges();

dc.Entitys.Add(new Entity { Data = "Child2", ParentID = child.ID });
dc.SaveChanges();