无法在字段中插入NULL值(DateTime)

时间:2015-06-01 22:41:36

标签: c# sql-server entity-framework datetime

我正在努力解决这个问题,尽管在SO上有很多关于它的线索。

我有一个类可以为DateTime?这样的字段:

public class ActiveItem
{
    [Key]
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
    public int ID { get; set; }
    public Nullable<DateTime> TimeStarted { get; set; }
    public Nullable<DateTime> LastHeard { get; set; }
}

我有一个数据库模式定义为:

CREATE TABLE [dbo].[ActiveItems] (
    [ID]          INT      IDENTITY (1, 1) NOT NULL,
    [TimeStarted] DATETIME NULL,
    [LastHeard]   DATETIME NULL,
    CONSTRAINT [PK_ActiveWorkflows] PRIMARY KEY CLUSTERED ([ID] ASC)
);

然后我尝试保存ActiveItem,其中TimeStartedLastHeard为空。但是,当我尝试这样做时,我收到以下错误:

  

&#34;无法将值NULL插入列&#39; TimeStarted&#39;,table&#39; dbo.ActiveItems&#39 ;;列不允许空值。 INSERT失败。\ r \ n语句已终止。&#34;

我似乎无法解决这个问题。

奇怪的是,我可以登录到SQL服务器并在表中创建一个具有空值的行。这个实体框架搞砸了吗?

1 个答案:

答案 0 :(得分:1)

确保您使用Profiler访问正确的数据库do a SQL Trace

如果约束违规与您所期望的(在架构方面)与您正在访问其他数据库的内容不一致,则可能发生这种情况。

然后,将用于连接Entity Framework的连接字符串更新为正确的数据库。