无法在字段(日期时间)中插入空值

本文关键字:插入 空值 时间 日期 字段 | 更新日期: 2023-09-27 17:52:36

我正在努力解决这个问题,尽管在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为空。但是,当我尝试这样做时,我得到以下错误:

"不能在'TimeStarted'列,'dbo.ActiveItems'表中插入NULL值;列不允许为空。插入失败。'r'n语句已终止。"

我似乎无法回避这个问题。

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

无法在字段(日期时间)中插入空值

要确保访问到正确的数据库,请使用Profiler执行SQL跟踪。

如果约束违反与您期望的不一致(就模式而言),则很可能您正在访问不同的数据库。

在此之后,更新用于连接到Entity Framework到正确数据库的连接字符串