Dapper는 MySQL DATETIME에서 01-01-0001 00:00:00을 반환합니다.

dapper datetime mysql

문제

Dapper가 MySQL 데이터베이스 DATETIME 유형과 함께 작동하도록 할 수 없습니다. DATETIME 열에 대해서는 항상 "01-01-0001 00:00:00" 을 반환합니다. 다음은 몇 가지 세부 사항입니다.

.NET: 
DNX 4.5.1
MysqlData 6.9.8
Dapper - 1.50.0-beta6
MySQL: Server Version: 5.5.43-0+deb8u1

표:

CREATE TABLE campaign (
  id int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
  ...
  creation_date datetime DEFAULT NULL,
  last_modified datetime DEFAULT NULL,
  ...
)
ENGINE = INNODB

기음#:

public class Campaign 
 {
     public int Id { get; set; }
     public DateTime CreationDate {get; set; }
     public DateTime LastModified { get; set; }
     public DateTime StartDate { get; set; }
     public DateTime EndDate { get; set; }
 }


...
const string myConnectionString = "server=[IP];uid=[usr];pwd=[pass];database=[db];AllowZeroDatetime=false;";
 try
 {
     _conn = new MySqlConnection { ConnectionString = myConnectionString };
     _conn.Open();
 }
...

public Dictionary<int, Campaign> GetCampaigns()
{
            var campaignsDict = _conn.Query<Campaign>("select * from campaign").ToDictionary(row => row.Id,row => row);
            return campaignsDict;
} 

그것이 한 행을 검색 한 방법입니다 campaignDict :

여기에 이미지 설명을 입력하십시오.

추신 : 저는 .NET을 배우는 중이므로이 기술의 멍청한 행동입니다.

수락 된 답변

Dapper는 다음을 통해 그렇게하지 않는 한 자동으로 밑줄을 제거하지 않습니다.

Dapper.DefaultTypeMap.MatchNamesWithUnderscores = true;

따라서 실제로 여기에있는 것은 열에서 매핑되지 않은 속성입니다. DateTime 의 기본값은 01-01-0001 00:00:00입니다.

옵션 :

  • 밑줄 맞추기 사용
  • 쿼리의 열을 별칭으로 특성과 일치 시키십시오.
  • 데이터베이스 열과 일치하도록 속성을 변경하십시오.
  • 사용자 정의 유형 맵 작성


아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.