我有一个迁移,要将DateTime字段添加到现有实体User
:
public override void Up()
{
AddColumn("User", "UpdatedDate", c => c.DateTime(nullable: false, defaultValue: DateTime.Now));
}
public override void Down()
{
DropColumn("User", "UpdatedDate");
}
运行Update-Database
命令以运行迁移时,会发生以下错误:
System.Data.SqlClient.SqlException: The conversion of a datetime2 data type to a datetime data type resulted in an out-of-range value.
有趣的是,迁移运行正常,使用当前日期时间的默认值插入列,但抛出此异常。
答案 0 :(得分:0)
日期时间2上的MSDN:
定义与基于24小时制的时间相结合的日期。 datetime2可以视为现有日期时间类型的扩展,具有更大的日期范围,更大的默认小数精度和可选的用户指定精度。
我猜测datetime2比datetime更大,因为它更精确,这就是为什么你得到一个超出范围的例外。
答案 1 :(得分:0)
在以前的版本中,Entity过去经常抱怨这样的错误,但原因并不是转换。
模型通常属性为null,但数据库不允许空值。
请确认不是您的情况。正如你在某处有一些UserDate = null的用户。