如何使用实体框架删除实体对象对另一个实体的引用

本文关键字:实体 另一个 引用 删除 何使用 框架 对象 | 更新日期: 2023-09-27 18:27:00

我有一个实体Locations,它的主键由LongitudeLatitude组成,作为double

我想从另一个实体对象中删除对Locations中实体对象的引用,但每次我试图将引用设置为null时,我都会得到一个OptimisticConcurrencyException

using (MyModelContainer context = new MyModelContainer())
{
    Note note = context.Notes.Single(n => n.NID == NoteUpdate.NID);
    note.LocationReference.Load();
    note.LocationReference = null;
    context.saveChanges();
}

但它不起作用。note.LocationReference.Value = null也是如此。

如何将引用设置为null或其默认值?

如何使用实体框架删除实体对象对另一个实体的引用

我认为目的是更新db,以便在此处将注释行的位置列设置为null,因此分离是不起作用的。我认为在上面的代码中用note.Location = null;替换note.LocationReference = null;应该可以使用

您是否尝试删除引用?我相信这会删除父行,但如果你传入与注释绑定的对象,它是否只删除引用,我会很好奇。

context.DeleteObject(note.LocationReference);

通常,乐观并发错误意味着自上次加载对象以来,值已经发生了更改,但听起来这不是问题所在。但是,为了验证,没有人可以在运行代码之间修改它,对吧?

最后,你有没有试图设定国家?

context.Entry(note).State = EntityState.Added

在Note类中,添加:

public int? LocationReferenceId {get; set;}

要删除引用,请执行以下操作:

Note.LocationReferenceId = null;

然后将Note Object保存回数据库

我认为这应该奏效。