InvalidCastException lors de l'utilisation de Dapper pour mapper un champ Date de MySql

.net c# dapper mysql

Question

Je commence juste à utiliser Dapper pour accéder à une base de données MySql et je semble rencontrer un problème lorsque je traite des champs de date. Chaque fois que j'essaie de mapper un champ de type MySql Date, je reçois une distribution invalide. Il semble que le connecteur MySql renvoie un type MySqlDateTime, ce qui oblige Dapper à le convertir en objet plutôt qu'en date. Voici le code pertinent

Définition de propriété sur mon modèle

public DateTime PickupDate { get; set; }

Définition du champ dans MySql

PickupDate DATE

Exception lancée

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

Je sais que ça doit être quelque chose qui me manque, est-ce que quelqu'un peut m'indiquer ce que je dois faire pour que Dapper mappe ce champ sur un type de données DateTime?

Réponse acceptée

La réponse était de définir AllowZeroDateTime sur false dans la chaîne de connexion. A partir des options de chaîne de connexion MySQL trouvées dans le doc ici .

Si elle est définie sur True, MySqlDataReader.GetValue () renvoie un objet MySqlDateTime pour les colonnes date ou datetime qui ont des valeurs interdites, telles que les valeurs datetime zéro et un objet System.DateTime pour les valeurs valides. Si la valeur est False (paramètre par défaut), un objet System.DateTime est renvoyé pour toutes les valeurs valides et une exception doit être générée pour les valeurs non autorisées, telles que les valeurs de date / heure.

Pour une raison quelconque, même avec une date valide, je recevais le type MySqlDateTime au lieu de DateTime. Si vous modifiez cette valeur, le comportement correct est activé.




Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi