2012-06-05 107 views
3

我正在使用ASP.Net 4 EF 4.3.1 Code First Migrations。EF遷移:無法添加DateTime列

我有一個現有的模型類。我添加了一個屬性,它:

public DateTime LastUpdated { get; set; } 

當我運行更新數據庫-force -verbose我得到:

ALTER TABLE [MyTable的] ADD [LASTUPDATED] [日期時間] NOT NULL DEFAULT '0001-01-01T00:00:00.000'
System.Data.SqlClient.SqlException (0x80131904):將varchar數據類型轉換爲日期時間數據 類型導致超出範圍值。
該聲明已終止。

我想猜測這與在生成的SQL中使用的隱含缺省值有關 - 它似乎在抱怨用於初始化事物的varchar是數據丟失。

+0

這不是我的默認設置--EF Code First Migrations會自動爲任何新的非空DateTime屬性/列生成此SQL。 –

+0

SQL DateTime數據類型的最小值爲1月1753年。.NET日期時間的最小值爲1 1 0001。不幸的是,衝突很常見。 –

回答

6

這個問題的答案不能夠添加一個非空DateTime列的這個問題是與獲取2個默認值的一個DateTime列指定的問題: EF 4.3.1 Migration Exception - AlterColumn defaultValueSql creates same default constraint name for different tables

也就是說,它被打破很長一段時間,你可以用它爲空的遷移解決方法是:

public DateTime? LastUpdated { get; set; } 

PM> update-database 

然後再次遷移它不是空來得到你想要的結果:

public DateTime LastUpdated { get; set; } 

PM> update-database