簡體   English   中英

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

[英]InvalidCastException when using Dapper to map a Date field from 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 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM