EntityFramework中出現DateTime2異常的完美解決辦法


今天在使用entityframework往數據庫插入數據的時候,突然出現了一個數據類型轉換異常的問題:

System.Data.SqlClient.SqlException: 從 datetime2 數據類型到 datetime 數據類型的轉換產生一個超出范圍的值.

查了一下網上的資料,很多人給了原因與解決辦法:

C#中的DateTime類型比SqlServer中的datetime范圍大。SqlServer的datetime有效范圍是1753年1月1日到9999年12月31日,如果超出這個范圍,EF就會把datetime轉換為datetime2,但在數據庫的映射類型還是datetime類型,所以才會出現異常,

網上解決辦法:

1.將數據庫中的時間字段改成datetime2

2.修改ef的數據庫生成配置

3.傳時間在數據庫規定的范圍內的時間參數

但是個人覺得這幾種辦法都不是十分妥當,個人解決辦法:將model的時間類型設置為可空類型即可,例如 

public DateTime? CreatTime{get;set;}//或者 public Nullable<DateTime> CreateTime { get; set; }

此方法可完美解決插入時間類型轉換報錯異常

 


免責聲明!

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



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