2013-03-16 55 views
0

時,ObjectStateManager中已存在具有相同關鍵字的對象,因此我之前發佈了一個問題,但未收到太多反饋。可能是我解釋錯了。當你的知識有限時,很難問正確的問題。總而言之,我有三個EF實體:Books,Pages和Content - 書中有許多頁面,一頁只有一個內容。EF - 在將現有實體添加到關聯

我已經有內容條目,我不需要創建它們,只是在我的Page實體中引用它們。所以我想要做的是這樣的:

//Add a new Book 
var myBook = new Book(); 
//Add a new page 
var myPage = new Page(); 

//I'm selecting this one from an asp.net dropdown box 
var myContent = contentService.get(id); 

//Connect the page and content 
myPage.Content = myContent; 

//Add a page to the book 
myBook.Pages.Add(myPage) 

當我添加的第一頁,一切都很好,但是當我嘗試將第二個添加到我的書,我得到一個異常。如果我將myContent分配給導航屬性(myPage.Content = myContent)的行註釋掉,則錯誤消失。

最大的問題是......如何在頁面引用已存在的數據庫條目時,如何添加一個有2頁或更多頁的新書(數據庫中有2個新條目)?

+0

您是否試圖在同一個過程中添加第二個頁面?或者我的頁面已經存在於數據庫中,並且您嘗試添加第二頁? – Silagy 2013-03-16 09:00:49

+0

此時沒有任何內容保存在數據庫中。數據庫只包含內容條目。我想要做的是創建一本新書,然後創建一個新頁面(數據庫中已經存在的內容),另一個,另一個...一旦我完成了,我想保存一個新的書(數據庫條目)及其所有頁面(包含FK到內容的數量的數據庫條目) – esper 2013-03-16 09:06:48

+0

在'頁面'的關係中,2頁可以引用相同的內容嗎?這就是問題在這裏的樣子(除非在每次調用中將「Id」更改爲其他內容)。 – James 2013-03-16 09:31:22

回答

0

交換兩行:

myBook.Pages.Add(myPage); 
myPage.Content = myContent; 

原因是myBook.Pages.Add(myPage)改變整個對象圖中myPage狀態以Added。因此,如果您先添加頁面然後分配內容,則內容仍爲Unchanged

+0

我已經嘗試過這麼多的東西,這一個是他們中的一個,但現在我不記得,如果我得到同樣的錯誤。我會試試這個並回復你。關於重新發布的評論 - 你說得對,我要刪除我的第一個問題 – esper 2013-03-17 16:27:14

相關問題