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