【问题标题】:Entity Framework Non-nullable column is mapped to a nullable entity property实体框架不可为空的列映射到可空的实体属性
【发布时间】:2012-04-22 08:30:44
【问题描述】:

我在 Entity Framework 4.1 中收到此可为空的列错误消息 - 当该列实际上不可为空时:

Non-nullable column MyView.RunningTotal in table TransactionListView 
is mapped to a nullable entity property.

但您可以从下面的屏幕截图中看到,该列不可为空,实体属性也不可为空。那么为什么会出现这个错误呢?

【问题讨论】:

  • (None) 不是表示可空性的默认值但不是假的吗?如果你指定 True,它会起作用吗?我现在附近没有视觉工作室可以自己检查...
  • 将(无)更改为 False 有效,但每次重新生成 edmx(使用从数据库生成模型)时,该更改都会丢失
  • 您是否尝试过从设计器中删除实体并重新添加?我已经通过这种方式解决了类似的问题。
  • @JK - 不,它不会丢失。 EF 不会更改已设置的属性。
  • 尝试更改模型生成选项 - 有一个地方可以调整此行为。

标签: c# entity-framework mapping poco nullable


【解决方案1】:

直接的解决方案是手动将 Nullable 参数指定为 True。

【讨论】:

  • 好的,我一开始就这样做了,但在 Visual Studio 2015 中仍然出现此错误。出了点问题。
  • 太奇怪了。在属性窗口中,它显示可为空的“True”,但我只是在文本编辑器中打开了 .edmx 文件并将其设置为 false。什么鬼。
  • @JaredBeach,同样的事情也发生在我身上。事实证明,当您更新 .edmx 文件时,您需要在部分类中的更改清单之前保存它(ctrl + s)!给我很大的惊喜!
【解决方案2】:

2017 更新 (Visual Studio 2017)

如果 lLya 提到的公认的直接解决方案对您没有帮助,那么这可能。 您可能会注意到,当您保存图表时,它会执行一些工作,例如根据图表更改更改类属性。人们会认为生成器本身会意识到这些变化,对吧?!您可能仍会收到此错误。

为我解决的问题是重新生成数据库(在图表中单击右键 -> 从模型中重新生成数据库)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-23
    • 1970-01-01
    • 1970-01-01
    • 2016-04-08
    • 1970-01-01
    • 2013-06-04
    • 2012-09-29
    • 2015-01-22
    相关资源
    最近更新 更多