自作ORマッピング
いきなり挫折.
DBのカラムの型を引いてきて,.NETの値型にマッピングをしてみた.ところが,よく考えると値型はnullをとることができない!
そこで,System.Data.SqlTypes.SqlInt32とかNullを取れるクラスがいちおうあるので,それらに変えてみた.ところがここまできて根本的に間違っていることが分かった(浅はかすぎる〜).
別のところでUpdate文を生成しているのだけど,ここでは型情報に関わらずToString()をしたうえで適切なエスケープを施し,文をビルドしているのだが,SqlInt32.NullをToString()すると帰ってくるのは"Null"という文字列だったりするのである.これではDB内でNullにしておきたいところに文字列を入れてしまうではないか.かといって,ひとつずつIsNullのチェックを入れるのはあまりにもマヌケです.
使うのはstringとdecimalとdatetime三つなので,自作ラッパクラスを使うという手もあったが,結局,全部をstring型でもつことにした.今回の仕組みではどうせUIで受け取るデータは全部string型で,エラーチェックも先にはいるのだから,stringののまま入れればいいこととだとわかったのでした.