EF迁移:无法添加DateTime列

时间:2012-06-05 22:43:37

标签: datetime ef-migrations

我正在使用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是数据丢失。

1 个答案:

答案 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