2012-03-07 30 views
0

我有一個實體Locations,其主鍵由LongitudeLatitude組成double如何從Entity Framework中將實體對象的引用移除到另一個實體?

從另一個實體對象中,我想刪除對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

你能爲註釋和位置顯示你的模型嗎? – 2012-03-07 21:11:42

+0

'Location'和'Note'在0..1到很多關係中。 「位置」的主鍵爲「經度」,「緯度」爲「雙」。 '筆記'有一個標題,一個內容和一個ID。 – flyinggecko 2012-03-07 21:31:35

+0

你有沒有設置任何級聯刪除/更新? – RichardW1001 2012-03-07 22:21:00

回答

0

我相信目的是更新數據庫,以便註釋行的位置列在這裏設置爲null,因此分離不會工作。我認爲在上面的代碼中替換note.LocationReference = null;note.Location = null;應該可以工作

+0

不,對不起,但那是我嘗試的第一件事。在這種情況下,您將刪除位置,而不是對其的引用。你說得對,我想更新分貝。 – flyinggecko 2012-03-07 21:05:04

0

您是否嘗試刪除引用?我相信這會刪除父行,但是會想知道是否只在傳入與該筆記綁定的對象時才刪除引用。

context.DeleteObject(note.LocationReference); 

通常,樂觀併發錯誤意味着自上次加載的對象的值發生了變化,但它聽起來就像是沒有問題的。但是,爲了驗證,在運行代碼之間沒有人可以修改它,對吧?

最後,你有沒有試圖設置國家?

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

在你的筆記類中,添加:

public int? LocationReferenceId {get; set;} 

要刪除的參考信息:

Note.LocationReferenceId = null; 

然後保存注意對象返回到數據庫

我偵察這應該夠了吧。

+0

我試過這個,它沒有任何變化 – flyinggecko 2012-03-08 12:15:28

+0

你可以複製Note類的完整代碼嗎? – Drauka 2012-03-08 13:20:07

相關問題