0

所以我早些时候发布了一个问题,但没有收到太多反馈。可能是我解释错了。当您的知识有限时,很难提出正确的问题。

总而言之,我有三个 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 个新条目)的新书?

4

1 回答 1

0

交换两行:

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

原因是myBook.Pages.Add(myPage)将整个对象图的状态更改myPageAdded. 因此,如果您先添加页面然后分配内容,则内容仍然存在Unchanged

于 2013-03-17T10:23:56.847 回答