2011-03-20 33 views
2

我知道有大量關於此問題的帖子,但它們都不能解決我的問題。實體框架錯誤:將datetime2數據類型轉換爲日期時間數據

這裏的情景:

我在MS SQL Server數據庫用戶表,它是不可爲空並且使用GETDATE()在「方法是自動設置有CREATEDATE日期時間列默認值或綁定「設置。

我能夠創建一個用戶就好了與標準EF插入,但是當我嘗試更新的用戶,我得到這個錯誤:

The conversion of a datetime2 data type to a datetime data type resulted in an out-of-range value.

什麼是不具有關於EF擔心的伎倆CreateDate列的更新?我有StoreGenerationPattern = Identity但這沒有幫助。

這裏是我的實體屬性的EF屬性: http://screencast.com/t/8ndQRn9N

這裏是我的更新方法: http://screencast.com/t/UXIzhkhR

+0

你有VS 2010 SP1嗎? – 2011-03-20 00:54:35

+0

@Ladislav - 是的 – EdenMachine 2011-03-24 23:58:00

回答

4

你有沒有嘗試設置StoreGeneratedPattern屬性爲「計算」。否則,作爲最後的手段,嘗試將列的數據類型更改爲datetime2

[問題就出現了,因爲.NET DateTime.MinValue等於0001-1-1但SQL Server DateTime涵蓋1753年1月1日至9999-12-31]

+1

我意識到datetime2涵蓋了更大的時間跨度,但爲什麼我需要更多的時間,如果我只是設置創建日期(這將是當前日期)?問題在於它一直嘗試更新創建到0001-1-1,而不是根本不更新它,因爲它是一個創建並在創建記錄時在數據庫中創建,並且永遠不會更新。它應該放在一邊,不要擔心它像實體密鑰。 – EdenMachine 2011-03-24 23:57:45

2

我知道這是一個老問題,但也許這可能會對某人有所幫助:

問題可能是由於.edmx文件的概念部分(CSDL)中的StoreGeneratedPattern與存儲部分(SSDL)中的StoreGeneratedPattern不同步造成的。 GetDate()默認值永遠不會被調用,因爲 - 除非您從客戶端代碼分配日期 - 使用默認值DateTime.MinValue

好消息是,它是固定的。尋找KB2561001:http://archive.msdn.microsoft.com/KB2561001。我不知道這是否在隨後的EF 4.3發行版中得到解決,或者您仍然需要應用此修補程序。

相關問題