因为它有一个DefiningQuery而没有元素存在于ModificationFunct
本文关键字:InsertFunction 元素 存在 ModificationFunct 有一个 DefiningQuery 因为 | 更新日期: 2023-09-27 18:03:07
我在我的应用程序中使用EF。
我尝试保存'插入一个新记录到映射表
并得到以下错误: Unable to update the EntitySet 'UsersLimitationToCountry' because it has a DefiningQuery and no <InsertFunction> element exists in the <ModificationFunctionMapping> element to support the current operation.
我应该自己在edmx中定义它吗?如何?
我的多对多映射表缺少PK
添加,问题解决了
同意接受的答案。只是提供背后的原因…
对没有主键的表进行EF映射时,它被视为视图。因为视图是逻辑实体,所以它们不能被更新。
因此,要么将缺失的主键添加到表中,要么将它们视为视图&
如果你的视图是可更新的,你可以简单地删除属性中视图的EntitySet定义中的元素.edmx的StorageModel部分,以及正常的更新处理
这就是我的情况。简单地删除会导致另一个错误。除了最后一个,我遵循了这篇文章的步骤。为了您的方便,我从帖子中复制了我解决问题的4个步骤,如下:
- 右键单击edmx文件,选择Open with, XML editor
- 在edmx:StorageModels元素中找到实体
- 完全移除
DefiningQuery
- 将存储:Schema="dbo"重命名为Schema="dbo"(否则,代码将生成一个错误,说名称无效)
我在一个可更新视图上遇到了这个问题。发现这篇文章解决了我的问题。
所以我的视图的底层表确实定义了主键,但是EF不知道哪些列在PK中,因为实体是建立在视图上的。这里的技巧是"说服"EF你的视图可以被更新为一个表。步骤与上面的答案几乎相同:
- 右键单击edmx文件,选择Open with, XML editor
- 在edmx:StorageModels元素中找到实体
- 完全删除
<DefiningQuery>
部分 - 将存储:Schema="dbo"重命名为Schema="dbo"
- 将
store:Type="Views"
更改为store:Type="Tables"
-
右键单击edmx文件,选择Open with, XML编辑器
-
查找edmx:StorageModels元素中的实体
-
完全删除DefiningQuery
-
将
store:Schema="dbo"
重命名为Schema="dbo"
(否则,代码将生成一个错误,说名称无效)
我的表在sql表设计中没有主键。添加并解决
确保你的外键表中没有多个列名与引用表中的列相匹配;只有主键应该在参考表和参考表之间匹配。0 . .应该有不同的列名,为列制定命名约定,以确保引用表和被引用表没有多个匹配的列名。由ALMwConsult.net提供
**重新检查您的表是否有PK:**只需添加主键,然后删除并重新添加表到edmx,然后它应该工作
如果你没有在你的表中处理主键,那么这个问题在更新和插入记录数据库时,肯定会在MVC中发生
DbUpdate Exception被user
正在开发db first mvc应用程序。问题是我忘记为表定义主键。通过使用alter命令添加主键并更新DAL(edmx)