5

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 メソッドもあります。私が見逃している簡単な構文はありますか?

4

1 に答える 1