4

我正在使用 ASP.Net 4 EF 4.3.1 代码优先迁移。

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

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 数据类型转换为 datetime 数据类型在一个超出范围的值。
该语句已终止。

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

4

1 回答 1

7

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

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

public DateTime? LastUpdated { get; set; }

PM> update-database

然后再次迁移它而不是 null 以到达您想要的位置:

public DateTime LastUpdated { get; set; }

PM> update-database
于 2012-06-05T22:43:37.950 回答