【问题标题】:Error 3031 mapping fragments starting at line 439:Non-nullable column错误 3031 从第 439 行开始映射片段:不可为空的列
【发布时间】:2012-01-30 00:09:58
【问题描述】:
Error 3031: Problem in mapping fragments starting at line 439:Non-nullable column D_LINK.CARTON_QTY in table D_LINK is mapped to a nullable entity property.

我有一个视图D_LINK 有一个列

CARTON_QTY(int, not null)

我不明白我的问题在哪里 我必须使它为空\如何?

【问题讨论】:

    标签: sql entity-framework entity-framework-4


    【解决方案1】:

    我解决了 1.从模型中删除特定的表 2. 右击模型,选择Update model from the database,选择删除的表,点击finish。

    【讨论】:

      【解决方案2】:

      如果您想保留记录。只有 undo 删除错误否则重建表

      【讨论】:

        【解决方案3】:

        只需从模型中删除该特定表并再次添加即可。这将解决您的问题。

        【讨论】:

          【解决方案4】:

          这是我在 EF 4.5 上发现的,以前的版本可能没有这个确切的问题。

          DRM 提到了更新它的方法,但我发现有时即使您更新它,一些小的更改(例如切换必填字段或更改字段名称)即使您更新它也不会在 edmx 中更改它们.因此,您的数据模型与数据库不完全匹配。

          我发现确保您的 edmx 实体模型正确的最佳方法是删除 edmx 并重新添加它。在 EF 4.5 上执行数据库优先方法后,我认为实体似乎更适合使用代码优先方法而不是数据库优先方法。

          【讨论】:

            【解决方案5】:

            在将不可为空的列更改为可空的列后,我遇到了这个问题。 为我解决了以下问题:

            1. 手动编辑该列以及该列与另一个表的链接到 .edbx 文件中的 (0...1)。
            2. 手动编辑后,请按照 DRM 所述更新表。

            仅其中一个操作并没有解决我的问题(感觉像是一个小故障)。希望这可以帮助某人。

            【讨论】:

            • 在我的情况下(仍然是 EF 3.5),黑客在 .edmx 中。
            【解决方案6】:

            从数据库刷新 edmx 中的表(在模型浏览器中,右键单击-->从数据库更新模型-->更新选项卡-->选择您的表-->单击更新)

            【讨论】:

              【解决方案7】:

              错误表明您在表/视图中的列不可为空,但实体模型中的类的属性可以为空。它们必须都可以为空或不可为空。

              【讨论】:

              • 如何将表中的列更改为可为空? (在 edmx 中不在数据库中 - 我已经更改了它们)
              • 这太烦人了。我将表列从可空更改为不可空,并从数据库更新了我的模型。但看起来它没有将实体属性切换为不可为空,并且我不断收到此错误
              • @SonicSoul 我也有同样的问题。这很烦人。我通过从设计器中删除所有表格并重新添加它们来修复它。
              猜你喜欢
              • 2011-08-29
              • 1970-01-01
              • 2014-12-18
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2017-04-29
              • 2018-05-12
              • 2011-06-08
              相关资源
              最近更新 更多