null 値を持つ複数の DateTime フィールドを持つ db テーブルがあります。これらは、クラスの null 許容 DateTimes にマップされます。
データ層内で Dapper を使用して更新を実行しようとすると、次のようになります。
using (IDbConnection cnn = new SqlConnection(DB.getConString()))
{
cnn.Open();
return cnn.Execute((this.OptionID == 0 ? _insertSQL : _updateSQL), this);
}
SqlDateTimeOverflow 例外が発生します (DateTime フィールドが null ではなく '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 メソッドもあります。私が見逃している簡単な構文はありますか?