我有一个 db 表,其中包含几个具有空值的 DateTime 字段。这些映射到我班级中的可为空的日期时间。
如果我尝试在我的数据层中使用 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。
解决此问题的唯一方法是单独指定每个参数并将值切换为 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 方法也可以进行类似的更新。我缺少更简单的语法吗?