我有一个数据库表与多个日期时间字段与空值。这些映射到我的类中的可为空的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