podejrzewam to, co się tutaj dzieje, jest proste:twoja baza danych ma kolumny inne niż Unicode i próbujesz przechowywać dane w Unicode. Postacie niereprezentacyjne będą rzeczywiście greckie. Prawidłowa poprawka jest:upewnij się, że twoja kolumna jest w Unicode. Mieszanie z kodowaniami kolumn mogło praca, ale cholera to dużo pracy w porównaniu do zwykłego używania Unicode.
Dapper przekazuje rzeczy "tak jak jest" do ADO.NET; to, co robi dostawca, zależy od dostawcy. Jest jest sposób, aby powiedzieć mu, aby wybierał między ANSI a Unicode podczas wysyłania danych do jednak baza danych - przez DbString
, czyli
conn.Execute(sql, new {
id, name,
desc = new DbString { IsAnsi = true, Value = desc }
});
Pozwala to również kontrolować długość itp. Jednak nie kontrolujemy kodowania tutaj; kodowanie jest zwykle właściwością samej bazy danych lub dostawcy. Jeśli MySQL ma jakieś niestandardowe sposoby kontrolowania tego w ADO.NET, jestem "wszystkimi uszami", ale najpierw:musisz go uruchomić w surowym ADO.NET.