使用Dapper從MySql映射Date字段時出現InvalidCastException

.net c# dapper mysql

我剛開始使用Dapper訪問MySql數據庫,在處理日期字段時似乎遇到了問題。每當我嘗試映射MySql日期類型字段時,我都會收到無效的強制轉換。似乎MySql連接器返回一個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.

我知道它一定是我遺漏的東西,任何人都可以指出我正確的方向,我需要做什麼才能讓這個領域的Dapper映射到DateTime數據類型?

一般承認的答案

答案是在連接字符串中將AllowZeroDateTime設置為false。從這裡找到的MySql連接字符串選項文檔。

如果設置為True,則MySqlDataReader.GetValue()將為具有不允許值的日期或日期時間列返回MySqlDateTime對象,例如零日期時間值,以及有效值的System.DateTime對象。如果設置為False(默認設置),則會導致為所有有效值返回System.DateTime對象,並為不允許的值(例如零日期時間值)拋出異常。

出於某種原因,即使使用有效日期,我也會獲得MySqlDateTime類型而不是DateTime。將此更改為false會導致發生正確的行為。



許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因