我正在努力解决这个问题,尽管在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
,其中TimeStarted
和LastHeard
为空。但是,当我尝试这样做时,我得到以下错误:
"不能在'TimeStarted'列,'dbo.ActiveItems'表中插入NULL值;列不允许为空。插入失败。rn语句已终止。"
我似乎无法回避这个问题。
奇怪的是,我可以登录到SQL服务器,并在表中创建一行与空值。这个实体框架搞砸了吗?
要确保访问到正确的数据库,请使用Profiler执行SQL跟踪。
如果约束违反与您期望的不一致(就模式而言),则很可能您正在访问不同的数据库。
在此之后,更新用于连接到Entity Framework到正确数据库的连接字符串