繁体   English   中英

实体框架未声明datetime.now为null

[英]Entity Framework not claiming datetime.now is null

这是我的代码:

UVCUpdate update = new UVCUpdate();
update.CurrentDate = DateTime.Now;
_context.UVCUpdates.Add(update);

_context.SaveChanges();

现在,虽然这样说,但我得到了一个内在的例外:

无法将值NULL插入“CurrentDate”列,表'bLinked.dbo.BlackbookUpdateUVC'; 列不允许空值。 INSERT失败。

如果我在此代码之前输出DateTime.Now,则输出:

2016年9月15日下午7:26:35

我在db中将CurrentDate的数据类型设置为datetime,在类中将其设置为DateTime。 既不允许空值,但DateTime.Now不应该为空吗?

当EF模型和数据库之间所谓的“存储生成模式”不匹配时,几乎总会发生这种情况。 如果model列具有存储生成的Identity或Computed模式 - 这意味着EF将确保数据库在插入或更新时自动提供这些值,并且不需要将它们包含在INSERT或UPDATE语句中。 缺少值将具有默认的NULL值,并且如果此列在数据库中同时不可为空,并且实际上没有计算或标识 - 则会出现错误。

我很抱歉,我觉得自己像个白痴。 谢谢Leopard。

我去获取UVCUpdate类来向他展示,并意识到当我从另一个类复制该类时,我不小心在CurrentDate的类中留下了[DatabaseGenerated(DatabaseGeneratedOption.Identity)] 因此,它可能尝试向SQL发送空值,因此SQL将创建一个ID,但该字段设置为不允许空值。 CurrentDate不应该是一个ID,所以我删除它,现在它的工作原理...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM