gpt4 book ai didi

asp.net - 它有一个 DefiningQuery 但没有 InsertFunction 元素...错误

转载 作者:行者123 更新时间:2023-12-02 01:54:33 26 4
gpt4 key购买 nike

这件事让我发疯,这个错误对我来说毫无意义:

无法更新 EntitySet“TableB”,因为它具有 DefiningQuery,并且元素中不存在支持当前操作的元素。

我的表格是这样放置的:

TableAint idA (identity, primary key)...TableBint idA (FK for TableA.idA)int val

TableB 在 SQL Server 中没有定义主键。 Entity Framework 已导入表和关联,并将这两个字段设置为键。但是当我尝试插入表时它会输出该错误!

怎么了?

<小时/>

编辑:根据亚历克斯的建议,解决方案是这样的:

  1. 右键单击 edmx 文件,选择“打开方式”、“XML 编辑器”
  2. 在 edmx:StorageModels 元素中找到实体
  3. 完全删除 DefiningQuery
  4. 将 store:Schema="dbo"重命名为 Schema="dbo"(否则,代码将生成错误,指出名称无效)
  5. 删除 store:Name 属性

我将 key 保留原样,因为我认为这两列都是 key 的一部分。

最佳答案

当遇到没有主键的表时,它会被视为 View 。

View 显示在 StorageModel\EntitySet[n]\DefiningQuery 元素中的 EDMX 文件中(在 XML 编辑器中打开即可查看)。

当您有 DefiningQuery 时,实体将变为只读,除非您添加修改函数。您需要 3 个修改函数(又名存储过程),每个函数对应插入、更新和删除。

但是你有两个选择:

更改键定义:

  1. And convince the EF that what it thinks is a view is really a table
  2. 或者添加适当的修改函数

对于您的情况,我建议 (1)。

关于asp.net - 它有一个 DefiningQuery 但没有 InsertFunction 元素...错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1589166/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com