EF插入遇到的问题--表没有主键时

由于已有的表没有主键而出现了一些问题

 

无法更新EntitySet,因为它有一个 DefiningQuery,而 元素中没有支持

解决方法一:看表是否有主键,一般就是表缺主键;

解决方法二:若项目表都没主键,把 .edmx文件里面 包含<DefiningQuery></DefiningQuery> 的语句删除即可(很费时)。

 

当使用没有主键的表完成EF映射时,会将其视为视图。由于视图是逻辑实体,因此无法更新。

因此,要么将丢失的主键添加到表中,要么将它们视为视图,并且不对它们执行任何更新操作。

如果您的视图是可更新的,则只需在.edmx的StorageModel部分内从视图的EntitySet定义中删除该元素,则正常更新处理将与其他任何表一样工作。但简单删除会导致另一个错误。

 

故解决方式:

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

 

posted @ 2020-01-09 13:05  highlightyys  阅读(73)  评论(0编辑  收藏  举报