首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >无法更新EntitySet -因为它具有DefiningQuery且不存在<UpdateFunction>元素

无法更新EntitySet -因为它具有DefiningQuery且不存在<UpdateFunction>元素
EN

Stack Overflow用户
提问于 2011-09-28 21:09:36
回答 22查看 358.6K关注 0票数 573

我正在使用Entity Framework1和.net 3.5。

我正在做一些简单的事情,像这样:

代码语言:javascript
复制
var roomDetails = context.Rooms.ToList();

foreach (var room in roomDetails)
{        
   room.LastUpdated = DateTime.Now;
}

当我尝试这样做时,我得到了这个错误:

代码语言:javascript
复制
 context.SaveChanges();

我得到了错误:

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

我在上下文上做了很多更新,没有任何问题,只有当我试图更新这个特定的实体时才会这样做。

我的所有搜索结果都是一样的,那就是在我试图更新的实体上没有声明主键。但是,我确实声明了一个主键...

EN

回答 22

Stack Overflow用户

回答已采纳

发布于 2011-09-28 21:11:21

这种情况通常是由以下原因之一造成的:

从数据库视图映射

  • 实体集
  • 自定义数据库查询
  • 数据库表没有主键

这样做之后,您可能仍然需要在实体框架设计器中进行更新(或者删除实体,然后添加它),然后才能停止获取错误。

票数 1.1K
EN

Stack Overflow用户

发布于 2013-03-28 17:20:21

只需向表中添加一个主键即可。就这样。问题解决了。

代码语言:javascript
复制
ALTER TABLE <TABLE_NAME>
ADD CONSTRAINT <CONSTRAINT_NAME> PRIMARY KEY(<COLUMN_NAME>)
票数 100
EN

Stack Overflow用户

发布于 2015-01-21 15:20:49

这就是我的情况。简单地删除会导致另一个错误。除了最后一篇之外,我遵循了这篇文章的步骤。为了您的方便,我从我遵循的帖子中复制了4个步骤来解决这个问题,如下所示:

  1. 右键单击edmx文件,选择打开方式,XML编辑器在edmx中找到实体:StorageModels element
  2. Remove DefiningQuery store:Schema="dbo" to Schema="dbo" (否则,代码将生成错误,说明名称无效)< code >G211
票数 75
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7583770

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档