1

我正在使用 Asp.Net MVC 4 中的 Entity Framework 测试脚手架(通过遵循本文)。我让它工作正常,除了即使我的域对象在字段中允许 null 并且数据库字段允许 null 我收到错误消息:

无法将值 NULL 插入列“IsSuccessful”、表“MyTestProject.Persistence.TestContext.dbo.Prediction”;列不允许空值。更新失败。该语句已终止。

我的域对象如下所示:

public class Prediction 
{
    [Key]
    public int Id { get; set; }
    [Required]
    public string Title { get; set; }
    [Required]
    public string Description { get; set; }
    public bool? IsSuccessful { get; set; }
}

生成的网页将 IsSuccessful 显示为带有 NotSet、True 和 False 选项的下拉框。在数据库中,IsSuccessful 列允许为空。我仍然收到错误消息。如果我选择 True 或 False(它已正确保存在数据库中),一切正常,但当我选择 NotSet 时则不行。

肯定有办法解决这个问题吗?

一些细节:

  • 视觉工作室 2012 RC
  • ASP.NET MVC 4
  • EntityFramework.dll 版本 5.0.0.0
4

1 回答 1

2

该错误消息看起来像是直接来自 SQL Server。如果服务器说该列不可为空,则该列不可为空。毕竟,它最清楚。

高音检查该列在数据库中是否真的可以为空。还要考虑:

  • 您是否正在查看具有略微不同架构的不同数据库?即没有应用正确的 DDL 脚本(真的很容易做到)
  • 您是否正在查看同一数据库中的不同对象?特别是,您是否正在查看Halvard.Prediction代码正在查看的位置dbo.Prediction
于 2012-07-27T09:06:19.503 回答