我正在使用ASP.Net 4 EF 4.3.1 Code First Migrations。
我有一个现有的模型类。我已经添加了一个属性:
public DateTime LastUpdated { get; set; }
当我运行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数据类型转换为日期时间数据 类型导致超出范围的值 声明已经终止。
我猜这与生成的SQL中使用的隐含默认值有关 - 它似乎抱怨用于初始化事物的varchar是数据丢失。
答案 0 :(得分:6)
无法添加非null DateTime列的问题的答案与获取为DateTime列指定的2个默认值的问题相同: EF 4.3.1 Migration Exception - AlterColumn defaultValueSql creates same default constraint name for different tables
也就是说,它已经被打破了很长时间,你可以通过迁移它可以解决这个问题:
public DateTime? LastUpdated { get; set; }
PM> update-database
然后再次使用它而不是null,以获得您想要的位置:
public DateTime LastUpdated { get; set; }
PM> update-database