C# 因为它有一个定义查询,没有<;插入函数>;元素存在于<;修改函数映射>;要素
我在应用程序中使用EF 我尝试将新记录保存\插入到映射表中 并获取以下错误:C# 因为它有一个定义查询,没有<;插入函数>;元素存在于<;修改函数映射>;要素,c#,.net,entity-framework,C#,.net,Entity Framework,我在应用程序中使用EF 我尝试将新记录保存\插入到映射表中 并获取以下错误: 无法更新EntitySet“UserSlimitationCountry”,因为它有一个DefiningQuery,并且元素中不存在支持当前操作的元素。 我应该自己在edmx中定义它吗?怎么做?我的多对多映射表缺少PK 添加,问题就解决了。同意接受的答案。 只是提供背后的原因 当使用没有主键的表进行EF映射时,它将被视为一个视图。由于视图是逻辑实体,因此无法更新它们 这样,要么将丢失的主键添加到表中,要么将它们视为视图
无法更新EntitySet“UserSlimitationCountry”,因为它有一个DefiningQuery,并且元素中不存在支持当前操作的元素。
我应该自己在edmx中定义它吗?怎么做?我的多对多映射表缺少PK
添加,问题就解决了。同意接受的答案。 只是提供背后的原因 当使用没有主键的表进行EF映射时,它将被视为一个视图。由于视图是逻辑实体,因此无法更新它们
这样,要么将丢失的主键添加到表中,要么将它们视为视图,不要对它们执行任何更新操作。
如果视图是可更新的,只需删除 元素的内部视图的EntitySet定义中的元素 .edmx的StorageModel部分,以及正常的更新处理 将与任何其他表一样工作 我就是这样。简单地删除会导致另一个错误。除了最后一个,我遵循了这篇文章的步骤。为方便起见,我从帖子中复制了解决问题的4个步骤,如下所示:定义查询
存储区:Schema=“dbo”
重命名为Schema=“dbo”
(否则,代码将生成一个错误,表明名称无效)
这些步骤对我有效确保外键表中没有多个列名与引用表中的列相匹配;只有主键应该在参考表和参考表之间匹配。0..1应具有可分辨的列名,为列制定命名约定,以确保引用和引用的表不具有多个匹配的列名。
由ALMwConsult.net提供**重新检查您的表是否没有主键:*只需添加主键,然后删除并重新将表添加到edmx,它应该可以工作如果您没有处理表中的主键,则此问题 在MVC中更新和插入记录数据库时肯定会发生
用户未处理DbUpdate异常我在可更新视图中遇到此问题。发现解决了我的问题 因此,我的视图的基础表确实定义了主键,但EF不知道PK中有哪些列,因为实体是在视图上构建的。这里的技巧是“说服”EF您的视图可以作为表更新。 步骤与上述答案几乎相同:
部分store:Type=“Views”
更改为store:Type=“Tables”
开发db第一个mvc应用程序。问题是我忘了为表定义主键。通过使用alter命令添加主键并更新DAL(edmx)来解决此问题。我的表在sql表设计中没有主键。添加了它并解决了。我也有同样的问题,但我不确定选择哪个列作为主键,因为在所有文章中都说映射表必须是只有两个外键的表,添加一些列只会破坏这种多对多关系。例如,我有两个表Projects and Clients和Project_Client表,其中有两个列,外键为ClientId上的ProjectId second。那么我必须在哪里设置主键呢?是的,作为评论有点延迟,但是这个答案和下面的内容帮助了我。谢谢你这么做!我希望有人能解释一下如何创建插入/更新函数……我能给你一个+50吗,多年来一直忽略这个问题,有时我的表在“从数据库更新”后塞满了,所以我恢复了更改,直到今天才知道,希望我在几年前就知道了…也考虑改变<代码> EDMX:SturaSchemDels/Schema/EntityContainer@Name和
edmx:映射/映射/EntityContainerMapping@StorageEntityContainer
attributes on real database schema-这对我的情况很有帮助。谢谢你,我不会在需要的时候得到它。并非所有的表都需要主键。确切地说,如果您想插入或更新这样的表(审计表),请使用触发器代替主键。谢谢!您可以定义问题的实际原因。非常感谢你的描述。请阅读这篇文章。更新DAL(edmx)意味着什么。我们应该怎么做