【发布时间】:2010-07-22 00:25:07
【问题描述】:
我正在使用 C# 在 ASP.NET MVC 2 中创建一个站点。我设计了一个数据库,其中包含一堆具有多对多关系的表,类似于以下内容:
GrandParent - 多对多 - Parent
和
父级 - 多对多 - 子级
我使用实体框架来制作所有实体类,现在我正在处理存储库类中的一个函数,该函数添加了一个 GrandParent。
它尝试创建 Child,将其添加到 Parent,然后将 parent 添加到 GrandParent,然后使用命令将 GrandParent 添加到数据库中
entities.GrandParents.AddObject(newGrandParent);
entities.SaveChanges();
它在SaveChanges() 行崩溃并出现错误:
无法更新实体集 'JunctionPartentsChilds' 因为它 有一个 DefiningQuery 并且没有 元素存在于 ModificationFunctionMapping 元素到 支持当前操作。
编辑: 我可以通过删除自动生成的代码中的所有 DefiningQuery 元素来修复该错误,现在我在同一行上遇到了一个应该更具描述性的错误,但我仍然不知所措。
错误是:Invalid object name 'JunctionPartentsChilds',它会引发 UpdatingException。
有什么想法吗?由于多对多关系,您是否必须以特殊顺序添加到数据库中?
谢谢!!
【问题讨论】:
-
听起来像是一个奇怪的数据库模式。 所有你的桌子有真正的 PK和FK吗?您是否使用任何视图或过程?你不应该用正确的模式得到
DefiningQuery。 -
请添加/详细说明您的数据库架构以及它们之间的关系。如果您的架构是正确的,那么您添加的方式就是不正确的。乍一看,您似乎以错误的顺序/方式添加对象。
标签: c# mysql entity-framework asp.net-mvc-2