每当我尝试创建一个新用户时,CreateAsync会抛出一个异常,其中InnerException为:
"The conversion of a datetime2 data type to a datetime data type resulted in an out-of-range value.\r\nThe statement has been terminated."
这个错误出现了100多个类似的查询,但大多数相当老,没有,据我所知,与我的情况相关。
SQLExpress DB中的字段定义为
[DOB] [datetime] NULL,
最初,我尝试在“ApplicationUser”模型中存储有效的20世纪日期。该字段在模型中定义为:
[Required)]
public DateTime DOB { get; set; }
我读了很多关于这个问题的原因的文章,并且无法找到解决方案,所以为了继续开发,我决定暂时忽略它并将字段设置为null并继续。所以我将ApplicationUser
中的定义更改为
[Column("DOB",TypeName = "datetime")]
public Nullable<DateTime> DOB { get; set; }
并对Controller中的值进行硬编码,将其设置为null
,忽略提供的值。但问题仍然存在。问题可能是什么?
任何帮助都非常感激。
答案 0 :(得分:1)
我将前往Microsoft并找到SQL团队并安排公开执行。人们需要学会制作正确的错误信息。
因为我正在测试并在DB中插入出生日期我只是假设datetime2到datetime的转换是指DOB字段。但是,当然,错误消息中没有提到受影响的列。
正如它发生的那样,数据库中还有另一个日期,JoinDate,它是在创建帐户时由控制器添加的,而这个问题就是这个字段。当然,这是我的错误 - 我应该初始化该字段,但有错误消息包括列名称我将在几秒而不是几天修复它。
这些错误消息表示&#34;无法打开指定的文件&#34;但是从未命名过指定的文件。
</rant>