Dapper를 사용하여 MySql의 Date 필드를 매핑 할 때 InvalidCastException이 발생합니다.

.net c# dapper mysql

문제

나는 Dapper를 사용하여 MySql 데이터베이스에 액세스하기 시작했으며 날짜 필드를 다룰 때 문제가되는 것 같습니다. MySql Date 유형 필드를 매핑하려고 할 때마다 잘못된 캐스트가 수신됩니다. MySqlDonnectTime이 MySqlDateTime 유형을 반환하면 Dapper가 날짜 시간 대신 Object로 캐스팅합니다. 관련 코드는 다음과 같습니다.

내 모델의 속성 정의

public DateTime PickupDate { get; set; }

MySql의 필드 정의

PickupDate DATE

던져진 예외

System.Data.DataException : Error parsing column 1 (PickupDate= - Object)
----> System.InvalidCastException : Specified cast is not valid.

나는 그것이 실종 된 것임에 틀림 없다는 것을 알고있다. 나는 누가이 필드를 DateTime 데이터 타입으로 맵핑하도록해야 하는가에 관해서 올바른 방향으로 나를 가리킬 수 있을까?

수락 된 답변

대답은 연결 문자열에서 AllowZeroDateTime을 false로 설정하는 것입니다. 여기에 있는 MySql conneciton 문자열 옵션 문서를 참조하십시오 .

True로 설정하면 MySqlDataReader.GetValue ()는 datetime 값과 같은 값을 허용하지 않는 날짜 또는 datetime 열에 대해 MySqlDateTime 개체를 반환하고 유효한 값에 대해서는 System.DateTime 개체를 반환합니다. False (기본 설정)로 설정하면 System.DateTime 개체가 모든 유효한 값에 대해 반환되고 허용되지 않는 값 (예 : 0 datetime 값)에 대해 예외가 throw됩니다.

어떤 이유로 든 유효한 날짜가 있더라도 DateTime 대신 MySqlDateTime 형식을 사용하고있었습니다. 이 값을 false로 변경하면 올바른 동작이 수행됩니다.



아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow