資料庫寫入錯誤:"SqlDateTime overflow. Must be between 1/1/1753 12:00:00 AM and 12/31/9999 11:59:59 PM."

今天在寫ASP.NET MVC的測試案例時,發現Linq to Sql對於未指定的DateTime會發生錯誤,會發生「SqlDateTime overflow. Must be between 1/1/1753 12:00:00 AM and 12/31/9999 11:59:59 PM.」的錯誤訊息,像下面的錯誤提示:

今天在寫ASP.NET MVC的測試案例時,發現Linq to Sql對於未指定的DateTime會發生錯誤,會發生「SqlDateTime overflow. Must be between 1/1/1753 12:00:00 AM and 12/31/9999 11:59:59 PM.」的錯誤訊息,像下面的錯誤提示:
原因是因為DateTime未指定任何資料時,它的預設值會是「0001/1/1 AM 12:00:00」。要解決此問題最簡單的方法就是將DateTime的屬性指派成DateTime.Now,例如:
News_Widget widget = new News_Widget{ Id = 3, CreateDate = DateTime.Now };
不過這可能不是好辦法,因為有時候會想要將資料表的欄未設定成預設值,就可以透過Linq to Sql的設計工具將資料模型欄位做設定,並將Auto Generated Value的項目設成True