所以我早些时候发布了一个问题,但没有收到太多反馈。可能是我说错了。当你的知识有限时,很难提出正确的问题。
总而言之,我有三个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 :(得分:0)
交换两行:
myBook.Pages.Add(myPage);
myPage.Content = myContent;
原因是myBook.Pages.Add(myPage)
将myPage
中整个对象图的状态更改为Added
。因此,如果您先添加页面然后分配内容,则内容仍为Unchanged
。