【发布时间】:2017-01-23 11:26:54
【问题描述】:
这是我的代码:
UVCUpdate update = new UVCUpdate();
update.CurrentDate = DateTime.Now;
_context.UVCUpdates.Add(update);
_context.SaveChanges();
虽然这样说,但现在我得到了一个内部异常:
无法将值 NULL 插入列“CurrentDate”、表“bLinked.dbo.BlackbookUpdateUVC”;列不允许空值。插入失败。
如果我在此代码之前输出 DateTime.Now,它会输出:
2016 年 9 月 15 日晚上 7:26:35
我在数据库中的 CurrentDate 数据类型设置为日期时间,而在类中它设置为日期时间。两者都不允许空值,但 DateTime.Now 不应该为空,对吧?
【问题讨论】:
-
显示
UVCUpdate类的定义。 -
CurrentDate 很可能在您的模型中(错误地)存储生成模式 Identity 或 Computed,因此 EF 只是忽略那里提供的任何值。在数据库本身中,它不是标识或计算列,并且需要一个值。
-
顺便说一句,您可能希望使用
datetime2。您可以通过将这行代码放在上下文的OnModelCreating()覆盖中来添加它:modelBuilder.Properties<DateTime>().Configure(c => c.HasColumnType("datetime2"));。 -
@Evk,哇,你猜对了。继续发布答案,我会接受!
-
Evk 是对的人,我什至没有意识到这一点。我真的很惊讶他能够根据错误猜测出来。就像......哇。
标签: c# sql-server entity-framework datetime