Je soupçons ce qui se passe ici est simple :votre base de données contient des colonnes non unicode et vous essayez de stocker des données unicode. Les personnages non représentables seront en effet grecs. Le correctif correct existe :assurez-vous que votre colonne est Unicode. Jouer avec les encodages de colonne pourrait travail, mais putain c'est beaucoup de travail par rapport à la simple utilisation d'unicode.
Dapper transmet les choses « telles quelles » à ADO.NET; ce que le fournisseur fait dépend du fournisseur. Il existe un moyen de lui dire de choisir entre ANSI et Unicode lors de l'envoi de données dans la base de données, cependant - via DbString
, c'est-à-dire
conn.Execute(sql, new {
id, name,
desc = new DbString { IsAnsi = true, Value = desc }
});
Cela vous permet également de contrôler la longueur, etc. Cependant, nous ne contrôlons pas l'encodage ici; l'encodage est généralement une propriété de la base de données elle-même ou du fournisseur. Si MySQL a des moyens sur mesure de contrôler cela dans ADO.NET, je suis "tout ouïe", mais d'abord :vous devez le faire fonctionner dans ADO.NET brut.