.net datetime을 datetime2로 매핑하려면 Dapper를 어떻게 얻을 수 있습니까?

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;

편집하다:
또한 nullable DateTime이 319 줄 주변의 매핑 블록 아래에 있습니다.

        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는 합법적입니까? 예, 이유를 알아보십시오.