如何使用实体框架删除实体对象对另一个实体的引用
本文关键字:实体 另一个 引用 删除 何使用 框架 对象 | 更新日期: 2023-09-27 18:27:00
我有一个实体Locations
,它的主键由Longitude
和Latitude
组成,作为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保存回数据库
我认为这应该奏效。