我使用的是EF v 6.2.0。我的问题类似于SOF问题 - Entity Framework not claiming datetime.now is null。但是,建议的解决方案对我不起作用。
buildDetail.BuildTime = epoch.AddMilliseconds(Double.Parse(buildTime)).ToLocalTime();
:
:
: // Other properties.
ps.dbEntities.BuildDetails.Add(buildDetailT);
ps.dbEntities.SaveChanges();
在SaveChanges()行上,我得到一个异常
Inner Exception 2:
SqlException: Cannot insert the value NULL into column 'BuildTime', table 'BuildDetailsDB.dbo.BuildDetails'; column does not allow nulls. INSERT fails.
The statement has been terminated.
当我在调试中悬停时,buildDetail.BuildTime属性将值显示为 {3/29/2018 9:17:22 AM} ,即当前日期时间。 Sql Server中的数据类型是datetime,我从数据库生成的模型显示该字段的返回值为System.DateTime。所以,我很沮丧为什么EF试图插入一个null。实际上,如果我在DB中为这些列允许空值,那就是它在该列中写入的内容 - NULL。
相关字段既未标记为Identity(在模型和数据库中),也未标记为计算。我还从数据库更新了模型,它们是同步的。
注意:我已经尝试过DateTime.ParseExact,甚至是一个DateTime对象,该字符串的转换格式与SQL Server中预期的格式完全相同,即" yyyy-MM-DD HH:MM:SS.FFF&#34 ;没有运气和同样的例外。例如。
buildDetailT.BuildTime = DateTime.Parse("2018-11-25 08:25:26.0000");