Ik vermoed wat hier gebeurt is eenvoudig:uw database heeft niet-unicode-kolommen en u probeert unicode-gegevens op te slaan. Niet-representatieve karakters zullen inderdaad Grieks zijn. De juiste oplossing is:zorg ervoor dat uw kolom unicode is. Knoeien met kolomcoderingen zou werk, maar verdomme dat is veel werk vergeleken met alleen het gebruik van unicode.
Dapper geeft dingen "zoals ze zijn" door aan ADO.NET; wat de aanbieder doet, is aan de aanbieder. Er is is een manier om het te vertellen om te kiezen tussen ANSI en Unicode bij het verzenden van gegevens in de database echter - via DbString
, d.w.z.
conn.Execute(sql, new {
id, name,
desc = new DbString { IsAnsi = true, Value = desc }
});
Hiermee kunt u ook de lengte enz. regelen. We hebben echter geen controle over de codering hier; de codering is meestal een eigenschap van de database zelf of van de provider. Als MySQL een aantal op maat gemaakte manieren heeft om dat in ADO.NET te regelen, ben ik "een en al oor", maar eerst:je moet het werkend krijgen in raw ADO.NET.