错误3031从第439行开始的映射片段:非空列


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)
我不明白我的问题在哪里我必须使它为空吗?

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

错误说,你的列在表/视图是不可空的,但在实体模型中的类的属性是可空的。

只需从模型中删除特定的表,然后重新添加它。你的问题就解决了。

在将非空列更改为可空列后,我得到了此问题。解决这个问题的方法如下:

  1. 手动编辑列,并在.edbx文件中将该列链接到另一个表(0…1)。
  2. 手动编辑完成后,按DRM描述的更新表。

其中一个动作本身并没有解决我的问题(感觉像一个小故障)。

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

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

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

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

我解出来了1. 从模型中删除特定的表2. 右键单击模型,选择Update model from the database,选择已删除的表,然后单击finish。

最新更新