DapperとSimpleCRUDを使用するシステムで、Npgsql v2.2.3からv3.2.4.1(現在はV3.2.5)にアップグレードしました。後者のカスタマイズされたバージョン。私のフィールドではありません - 私はちょうどv3のサポートでいくつかのPostGISのビットをしようとしていた...Dapper.SqlMapper.AddTypeHandlerがPostgres SimpleCRUD where節で呼び出されないようです。
Npgsql v3.xより厳しいタイピングでは、NpgsqlDbTypeをNpgsqlTypes.NpgsqlDbType.Timestamp。これは、SimpleCRUDコードのDapper.SqlMapper.AddTypeHandlerを介して行われます。カスタムバージョンでは、日付時刻の種類がUTCになります。
これはデータベースの挿入に対して期待どおりに機能しますが、WHERE句を使用すると呼び出されないように見えます。
Iは、UTC /ローカル変換のために調整されて、WHERE句のパラメータPostgresのログから見ることができます:パラメータ:$ 1 = '2017年7月27日13:29:51 + 01'
ブレークポイントを経由して、私はまた、タイプハンドラがWHERE句のために入力されていないことを見ることができますが、その他INSERTため
質問です:
は、私が呼ばれるようにDapper.SqlMapperタイプハンドラを期待するべきですWHERE句のパラメータ?
動作が期待されていない場合、Dapper.SimpleCRUDを使用する場合、NpgsqlDbTypeをNpgsqlTypes.NpgsqlDbType.Timestampに強制するにはどうすればよいですか?
感謝
私はNpgsqlの(3.2.5)とDapperの(1.50.2)の最新のNuGetパッケージに更新しています。 Dapper.SimpleCRUDの起源については不明ですが、2014年に人生が始まり、カスタマイズされている可能性が高いので、カスタム化をアップグレードして追加するのではなく、これを続けることになります。