我有一个实体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或其默认值?
答案 0 :(得分:0)
我认为目的是更新数据库,以便将注释行的位置列设置为null,因此分离不起作用。我认为在上面的代码中用note.LocationReference = null;
替换note.Location = null;
应该有效
答案 1 :(得分:0)
您是否尝试删除引用?我相信这会删除父行,但是如果你传入绑定到注释的对象,它会很奇怪它是否只删除了引用。
context.DeleteObject(note.LocationReference);
通常,乐观并发错误意味着自上次加载对象以来该值已发生更改,但听起来这不是问题。但是,为了验证,没有人可以在运行代码之间修改它,对吧?
最后,您是否尝试过设置状态?
context.Entry(note).State = EntityState.Added
答案 2 :(得分:0)
在Note类中,添加:
public int? LocationReferenceId {get; set;}
要删除引用,请执行以下操作:
Note.LocationReferenceId = null;
然后将Note对象保存回db
我认为应该这样做。