2012-08-14 175 views
0

我很新的實體框架,我有一些麻煩調整。就像所有的事情一樣,一開始我看到它讓我的生活更加簡單,並認爲它非常棒。然而,隨着我的對象模型稍微複雜一些,我開始面臨越來越多的問題。實體框架保存子對象

雖然我已經設法通過在這裏搜索幾乎所有的問題找到答案,但我現在的這個問題困擾着我。

我有兩個通過1到1/0關係鏈接的實體。我不能發表圖片又那麼請在下面fogive我躲閃圖紙:

Person (id, name, address, dob, etc. etc.) 
Spouse (id, name, address, dob, etc. etc.) 

雖然實際是比較複雜的,我不認爲我的問題了作用。現在

,看到這是一個1到0/1的關係無論是一個人1個配偶或他們0。如果我通過構建我的對象:

Person person = new Person(); 
person.Spouse = new Spouse(); 
person.Spouse = spouse; 

(包括想象屬性設置)

然後保存。它工作的一種享受。然後我可以再次加載它,編輯它等。生活是宏偉的。

我遇到問題的地方是我救了一個人(沒有配偶),然後在稍後階段加載此人進行編輯並嘗試附加配偶。當我到達我的容器時。安裝(人);調用時,它會引發以下異常:「具有臨時EntityKey值的對象不能附加到對象上下文。」

現在,我非常有信心,這是由於該方式IM添加配偶,即:

Person person = LoadPerson(id); 
Spouse spouse = new Spouse(); 
person.Spouse1 = spouse; 

問題IM看到的是我嘗試到現在這是以前沒有相關的子實體關聯。我在錯誤信息上進行了大量搜索,但通常它似乎與對象上下文有關。我還發現了一個解決方法(從我找到的結果)。如果我使用1對多關係並且執行Person.Spouses.Add(配偶),它可以正常工作。然而,由於這種關係不合邏輯(在這個國家,無論如何......),我毫不猶豫地這樣做了。林肯定它的一個簡單的答案,我已經明顯地忽略了我看到的結果(我高度懷疑我是第一個嘗試做這個...)但我沒有嘗試過似乎工作。

任何幫助將高度讚賞...

回答

0

你可能需要在你將其附加到人的配偶添加到上下文第一

Context.Spouses.Add(spouse);