0

假设以下类:

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 执行此操作以避免不必要的查询?

4

0 回答 0