即使列允许null,也无法插入值NULL

时间:2012-07-27 08:56:32

标签: c# asp.net-mvc-4 scaffolding entity-framework-5

我正在使用Asp.Net MVC 4中的实体框架测试脚手架(通过以下this article)。我得到它工作正常,除了即使我的域对象在字段中允许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允许为null。我仍然收到错误消息。如果我选择True或False(它在数据库中正确保存),一切正常,但是当我选择NotSet时则不行。

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

一些细节:

  • Visual Studio 2012 RC
  • Asp.Net MVC 4
  • EntityFramework.dll版本5.0.0.0

1 个答案:

答案 0 :(得分:1)

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

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

  • 您是否正在查看不同的数据库,模式略有不同?即没有应用正确的DDL脚本(非常容易完成)
  • 您是在同一个数据库中查看不同的对象吗?特别是,您是否正在查看Halvard.Prediction,其中 - 代码正在查看dbo.Prediction