Asp.net 类型为';System.Data.Entity.Infrastructure.DbUpdateException';在EntityFramework.dll中发生,但未在用户代码中处理

Asp.net 类型为';System.Data.Entity.Infrastructure.DbUpdateException';在EntityFramework.dll中发生,但未在用户代码中处理,asp.net,asp.net-mvc,entity-framework,Asp.net,Asp.net Mvc,Entity Framework,我映射了两个表,并在MVC中创建了脚手架。在表单中填充数据后,当我单击“创建”按钮时,出现以下错误 类型的例外 中出现“System.Data.Entity.Infrastructure.DbUpdateException” EntityFramework.dll,但未在用户代码中处理 附加信息:跨实体或关联共享的值 在多个位置生成。检查映射是否不存在 将EntityKey拆分为多个存储生成列 当您有子类型表映射,但其主键设置为“自动生成”时,通常会发生此问题。这是有问题的,因为EF将基于根实体

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

类型的例外 中出现“System.Data.Entity.Infrastructure.DbUpdateException” EntityFramework.dll,但未在用户代码中处理

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


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


如果上述问题确实存在,那么要解决它,请将子表的“
标识规范”
”设置为false。i、 e.从EDMX中删除
StoreGeneratedPattern=“identity”

如果看不到任何可以帮助您的innerexception消息(在调试期间),我已找到“identity Specification”问题的解决方案

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


来源:

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


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

检查表中的主键,如果不是,则将主键设置为id
标识规范为“是标识到

显示表格及其映射。还有更新代码。如何将子表的“标识规范”设置为false。我搜索了.edmx文件中的所有地方,但找不到此选项。你能帮帮我吗。