2013-02-15 51 views
0

這似乎並沒有工作:實體框架5列映射日期時間

this.Property(t => t.mydatetime) 
    .HasColumnType("datetime") 
    .HasColumnName("mydatetime"); 

看SQL事件探查器更新SQL字符串仍然使用DATETIME2(7),並使用額外的小數位。這個結果是datetime2和datetime之間的舍入差異。

我該如何強制實體框架使用datetime sql類型?

謝謝!

+0

無法重現這一點。 'HasColumnType(「datetime」)'創建'datatime'列(Sql Server 2008 r2,EF 5)。 – 2013-02-15 18:54:50

+0

我的分貝已經有一個日期時間列。我沒有使用EF創建數據庫。我也在使用sql 2008 r2 – dnndeveloper 2013-02-15 18:57:27

+0

嗯......更多相關信息? – 2013-02-15 19:26:10

回答

1

HasColumnType("datetime")指定列類型,而不是在SQL語句中使用的臨時參數類型。你無法控制這些,這是沒有必要的。如果您的應用程序中有一個.NET DateTime,並且某些小數位數已填滿並且希望將其存儲在SQL Server中的datetime類型中,則該值將(並且只能)以四捨五入值存儲。在將SQL發送到數據庫服務器之前,如果舍入發生在客戶端,或者數據庫服務器本身發生舍入,則無關緊要。結果將是相同的:舍入存儲的值會導致精度損失。

+1

問題是我們有兩個代碼路徑保存相同的日期時間.net對象。一個代碼路徑使用ef,另一個不使用。由於Ef發送7(日期時間2)小數位,另一個發送3(日期時間),它會導致保存到數據庫時舍入問題。 EF4沒有發生這種情況。 – dnndeveloper 2013-02-15 22:41:45