.net datetimeをdatetime2にマップするにはどうすればよいですか?

c# dapper

質問

かなりシンプルで、私はEFからDapperに私たちの既存のシステムを変換しています。企業のさまざまな理由から、データベースを実際に変更することはできませんが、テーブルの中にはDateTime2型の列があります。 Dapperは.net DateTimeをDbType.DateTimeに変換します。

誰かが前にこれに打ち勝っていて、簡単な解決策を見つけたに違いないでしょうか?

受け入れられた回答

Dapperは、あなたがコードベースに組み込む単一のファイルです 。ファイルを編集するだけです:

置き換えます(300行目):

        typeMap[typeof(Guid)] = DbType.Guid;
        typeMap[typeof(DateTime)] = DbType.DateTime;
        typeMap[typeof(DateTimeOffset)] = DbType.DateTimeOffset;
        typeMap[typeof(byte[])] = DbType.Binary;

を使用して:

        typeMap[typeof(Guid)] = DbType.Guid;
        typeMap[typeof(DateTime)] = DbType.DateTime2;
        typeMap[typeof(DateTimeOffset)] = DbType.DateTimeOffset;
        typeMap[typeof(byte[])] = DbType.Binary;

編集:
また、319行目の、マッピングのブロックをさらに下回るnull可能なDateTimeもあります。

        typeMap[typeof(DateTime?)] = DbType.DateTime;
        typeMap[typeof(DateTimeOffset?)] = DbType.DateTimeOffset;

に:

        typeMap[typeof(DateTime?)] = DbType.DateTime2;
        typeMap[typeof(DateTimeOffset?)] = DbType.DateTimeOffset;

人気のある回答

今のところ同様の質問でもっと簡単な解決策があります:

SqlMapper.AddTypeMap(typeof(DateTime), System.Data.DbType.DateTime2);

これはINSERTに適用する必要があります。ありがとう、@アイランド。



ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ