它有一个DefiningQuery,但没有InsertFunctionElement…Err

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (19)

无法更新EntitySet‘TableB’,因为它有一个DefiningQuery,并且元素中没有支持当前操作的元素

TableA
int idA (identity, primary key)
...

TableB
int idA (FK for TableA.idA)
int val

表B在SQL服务器中没有定义的主键。实体框架导入了表和关联,并将这两个字段设置为键。但是,当我尝试在表中插入时,它将输出该错误!

编辑:正如亚历克斯所建议的,解决办法是:

  1. 右键单击edmx文件,选择OpenWith,xml编辑器
  2. 在edmx:StorageModel元素中定位该实体
  3. 完全删除DefiningQuery
  4. 将存储区:schema=“DBO”重命名为Schema=“DBO”(否则,代码将生成一个错误,说明名称无效)
  5. 删除“存储:名称”属性

我保留了原来的键,因为这两个列都是键的一部分,这对我来说是可以的。

提问于
用户回答回答于

当遇到一个没有PrimaryKey的表时,它被视为一个视图。

视图显示在StorageModel\EntitySet中的EDMX文件中(在XML编辑器中打开以查看)。n\DefiningQuery元素

当您有一个DefiningQuery时,除非添加修改函数,否则该实体就变成只读的。需要3个修改函数(也就是存储过程),一个用于插入、更新和删除。

但你有两个选择:

更改关键定义:

  1. 让EF相信它认为的视图是一张桌子
  2. 或添加适当的修改函数。

用户回答回答于

只需向表中添加主键即可。。

ALTER TABLE <TABLE_NAME>
ADD CONSTRAINT <CONSTRAINT_NAME> PRIMARY KEY(<COLUMN_NAME>)

扫码关注云+社区