Datetime EF迁移:Can';t添加日期时间列

Datetime EF迁移:Can';t添加日期时间列,datetime,entity-framework-migrations,Datetime,Entity Framework Migrations,我正在使用ASP.NET4EF4.3.1代码优先迁移 我有一个现有的模型类。我已向其中添加了一个属性: public DateTime LastUpdated { get; set; } 当我运行updatedatabase-force-verbose时,我得到: ALTER TABLE[MyTable]添加[LastUpdated][datetime]非空默认值 “0001-01-01T00:00:00.000” System.Data.SqlClient.SqlException (0x8

我正在使用ASP.NET4EF4.3.1代码优先迁移

我有一个现有的模型类。我已向其中添加了一个属性:

public DateTime LastUpdated { get; set; }
当我运行updatedatabase-force-verbose时,我得到:

ALTER TABLE[MyTable]添加[LastUpdated][datetime]非空默认值 “0001-01-01T00:00:00.000”
System.Data.SqlClient.SqlException (0x80131904):将varchar数据类型转换为datetime数据类型 类型导致值超出范围。
声明已终止


我猜这与生成的SQL中使用的隐含默认值有关-它似乎在抱怨用于初始化内容的varchar丢失了数据。

无法添加非空DateTime列的问题的答案与获取为SQL指定的2个默认值的问题相同日期时间列:

也就是说,它已经被破坏了很长一段时间,您可以通过将其迁移为nullable来解决它:

public DateTime? LastUpdated { get; set; }

PM> update-database
然后使用not null再次迁移,以达到预期目的:

public DateTime LastUpdated { get; set; }

PM> update-database

这不是我的默认值-EF Code First Migrations会自动为任何新的非空DateTime属性/列生成此SQL。SQLDateTime数据类型的最小值为1753年1月1日。.NET Datetime的最小值为1 jan 0001。不幸的是,冲突是常见的。