【发布时间】:2013-03-16 08:53:13
【问题描述】:
所以我早些时候发布了一个问题,但没有收到太多反馈。可能是我解释错了。当您的知识有限时,很难提出正确的问题。
总而言之,我有三个 EF 实体:Books、Pages 和 Content - 这本书有很多页,而一个页面只有一个内容。
我已经有内容条目,我不需要创建它们,只需在我的 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 个新条目)的新书?
【问题讨论】:
-
您是否尝试在同一进程中添加第二页?或者您的页面我已经存在于数据库中,您尝试添加第二个页面?
-
此时没有任何内容保存在数据库中。数据库仅包含内容条目。我想要做的是创建一本新书,然后是一个新页面(数据库中已有内容),另一个,另一个......一旦我完成了,我想保存一个新的book(一个数据库条目)及其所有页面(包含 FK 内容的多个数据库条目)
-
在您的“页面”关系中,2 个页面可以引用相同的内容吗?这就是这里的问题(除非每次调用都将“Id”更改为其他内容)。
-
如果两个页面有相同的内容就很好了。这对 EF 来说是个问题吗?
-
在失败的实体上,您的 ID 字段上的 DB 生成选项是否正确。检查那把钥匙。如果它没有在 EF 中标记为 Exteranlly genrated,则值为 0 的 id 将执行此操作。
标签: c# asp.net entity-framework webforms