类型' System.Data.Entity.Infrastructure.DbUpdateException'的例外情况发生在EntityFramework.dll中但未在用户代码中处理

时间:2014-06-08 07:22:53

标签: asp.net asp.net-mvc entity-framework

我映射了两个表并在MVC中创建了脚手架。单击“创建”按钮后填写表单中的数据后,会出现以下错误。

  

类型的例外   ' System.Data.Entity.Infrastructure.DbUpdateException'发生在   EntityFramework.dll但未在用户代码中处理

     

附加信息:跨实体或关联共享的值   在多个位置生成。检查映射是否没有   将EntityKey拆分为多个存储生成的列。

4 个答案:

答案 0 :(得分:3)

当您具有子类型表映射,但其主键设置为自动生成时,通常会发生此问题。这是有问题的,因为EF将根据根实体的密钥显式设置值。

如果上述问题确实存在,那么要解决问题,请设置" Identity Specification "您的子表的表示为false。即从EDMX中删除 StoreGeneratedPattern="identity"

答案 1 :(得分:3)

如果看不到任何可以帮助你的innerexception消息(在调试期间),我找到了“身份规范”问题的解决方案。

在SQL Management Studio中(或在Visual Studio中的服务器资源管理器中),您必须打开导致问题的表并选择che主键。查看其属性,您将找到“身份规范”。你必须把它设置为“是”。

来源:http://www.technologycrowds.com/2015/07/system-data-entity-infrastructure-DbUpdateException.html

答案 2 :(得分:0)

在实体框架中,如果您提到任何字段作为键,那么它应该具有Isidentity属性为true,否则它将抛出此错误。

打开SQL Management Studio,您必须打开导致问题的表并选择主键(如模型中所述)。查看其属性,您将找到“身份规范”。您必须将其设置为“是”。

答案 3 :(得分:0)

检查表中的主键,如果没有,则设置主键为id 和身份规范“是身份YES