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

时间:2011-12-29 16:07:11

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

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)

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

7 个答案:

答案 0 :(得分:9)

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

答案 1 :(得分:7)

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

答案 2 :(得分:1)

将非可空列更改为可空列后,我遇到了此问题。 为我解决的是以下内容:

  1. 在.edbx文件中手动编辑列和另一个表中的链接到(0 ... 1)。
  2. 手动编辑后,执行DRM描述的更新表。
  3. 其中一项行动并没有解决我的问题(感觉就像一个小故障)。希望这可以帮助别人。

答案 3 :(得分:1)

只需从模型中删除该特定表格,然后重新添加即可。这将解决您的问题。

答案 4 :(得分:0)

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

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

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

答案 5 :(得分:0)

如果你想保留记录。只有撤消才会删除错误,否则会重建表格

答案 6 :(得分:0)

我解决了 1.从模型中删除特定表 2.右键单击模型,从数据库中选择“更新模型”,选择已删除的表,然后单击“完成”。