EF迁移:无法添加DateTime列

Chr*_*ini 3 datetime ef-migrations

我正在使用ASP.Net 4 EF 4.3.1 Code First Migrations.

我有一个现有的模型类.我添加了一个属性:

public DateTime LastUpdated { get; set; }
Run Code Online (Sandbox Code Playgroud)

当我运行update-database -force -verbose时,我得到:

ALTER TABLE [MyTable] ADD [LastUpdated] [datetime] NOT NULL DEFAULT'0001-01-01T00:00:00.000'System.Data.SqlClient.SqlException
(0x80131904):将varchar数据类型转换为datetime数据类型在超出范围的价值.
该语句已终止.

我猜这与生成的SQL中使用的隐含默认值有关 - 它似乎抱怨它用于初始化事物的varchar是数据丢失.

Chr*_*ini 6

无法添加非null DateTime列的问题的答案与获取为DateTime列指定的2个默认值的问题相同: EF 4.3.1迁移异常 - AlterColumn defaultValueSql为不同的默认值创建相同的默认约束名称表

也就是说,它已被打破了很长时间,你可以通过迁移它可以解决它:

public DateTime? LastUpdated { get; set; }

PM> update-database
Run Code Online (Sandbox Code Playgroud)

然后再次使用它进行迁移而不是null以获取您的预期位置:

public DateTime LastUpdated { get; set; }

PM> update-database
Run Code Online (Sandbox Code Playgroud)