我有一個數據庫表與多個日期時間字段與空值。這些映射到我的類中的可爲空的DateTimes。SqlDateTimeOverflow異常與可空的日期時間字段與Dapper更新
如果我嘗試執行與短小精悍的更新,我的數據層中:
using (IDbConnection cnn = new SqlConnection(DB.getConString()))
{
cnn.Open();
return cnn.Execute((this.OptionID == 0 ? _insertSQL : _updateSQL), this);
}
我得到一個SqlDateTimeOverflow例外(因爲DateTime字段是'01/01/0001 00:00:00' ,而,比空
是解決這個問題的唯一方法分別指定每個參數和切換值設置爲null這樣的:
using (IDbConnection cnn = new SqlConnection(DB.getConString()))
{
cnn.Open();
return cnn.Execute("UPDATE MyTable SET MyDateField = @MyDateField", new {MyDateField = (MyDateField.HasValue? MyDateField : Null), etc etc...);
我有表所以這將約50場是相當多的代碼,再加上有一個INSERT方法也可以進行類似的更新。有沒有更簡單的語法,我失蹤了?
是,樓市已經是日期時間?但它不會最終爲空。例如:public DateTime? ReleaseDate {get;組; }。 – Simon 2013-05-09 12:53:43
@Simon是的,但**值**是什麼?具有值「01/01/0001 00:00:00」的「DateTime?」不爲空*;如果你希望它是'null' - 將它作爲'null'存儲。 – 2013-05-09 13:00:18
如果這就是你的意思,那麼數據庫中的值爲空? – Simon 2013-05-09 13:03:27