【问题标题】:An exception of type 'System.Data.Entity.Infrastructure.DbUpdateException' occurred in EntityFramework.dll but was not handled in user codeEntityFramework.dll 中出现“System.Data.Entity.Infrastructure.DbUpdateException”类型的异常,但未在用户代码中处理
【发布时间】:2014-06-08 07:22:52
【问题描述】:

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

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

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

【问题讨论】:

  • 显示表格及其映射。还有更新代码。

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


【解决方案1】:

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

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

【讨论】:

  • 如何将子表的“身份规范”设置为 false。我在 .edmx 文件中到处搜索,但找不到此选项。你能帮帮我吗?
【解决方案2】:

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

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

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

      在实体框架中,如果你提到任何字段作为键,那么它应该具有 Isidentity 属性为真,否则它会抛出这个错误。

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

      【讨论】:

        猜你喜欢
        • 2018-03-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-08-04
        • 1970-01-01
        相关资源
        最近更新 更多