删除引用其父对象的子对象

时间:2013-10-25 20:17:33

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

假设以下类:

public class Parent
{
    public Int32 Id
    {
        get; set;
    }

    public String Name
    {
        get; set;
    }

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

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

    public String Name
    {
        get; set;
    }

    [Required]
    public virtual Parent Owner
    {
        get; set;
    }
}

尝试以这种方式删除某些子记录时遇到问题:

using (var db = new Context())
{
    var DummyInstance = new Child { Id = 1 };

    db.Set<Child>().Attach(DummyInstance);
    db.Set<Child>().Remove(DummyInstance);
    db.SaveChanges();
}

它会抛出 DbUpdateException ,如下所示:

  

'Context.Children'中的实体参与'Child_Owner'关系   找到0相关的'Child_Owner_Target'   预计会有1个“Child_Owner_Target”。

我的目的是避免查询将被删除的对象,而且我只能在我分配其父对象的虚拟实例时实现这一点:

var DummyInstance = new Child { Id = 1, Owner = new Parent { Id = 1 } };

但是,父ID并不总是已知(此外,它似乎不合适)。有没有办法让EF执行此操作以避免不必要的查询?

0 个答案:

没有答案