解決Entity Framework中DateTime類型字段異常


今天把一個使用了Entity Framework的程序從MySql遷移到SqlServer時,發現運行時報了一個異常:System.Data.SqlClient.SqlException: 從 datetime2 數據類型到 datetime 數據類型的轉換產生一個超出范圍的值

在網上查找了一下,具體的錯誤原因是:C#中的DateTime類型比SqlServer中的datetime范圍大。SqlServerdatetime有效范圍是175311日到99991231,如果超出這個范圍,EF就會把datetime轉換為datetime2,但在數據庫的映射類型還是datetime類型,從而出現該異常。

也就是說,這個異常出現是有前提條件的:時間范圍在1753.1.1-9999.12.31外。知道這個原因后,解決的方案就有如下方式了:

  1. 將數據庫字段改為DateTime2類型
  2. 使程序的時間范圍維持在1753.1.1-9999.12.31內。

一般來說,正常情況下時間范圍是不會在sqlserverdatetime范圍之外的,我的程序中出現這個異常是因為有個時間類型的字段沒有初始化,維持在默認的時間0001.1.1。沒有對該字段初始化本身就不對,把該字段初始化后就不報異常了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM