Подозирам това, което се случва тук е просто:вашата база данни има не-unicode колони и вие се опитвате да съхранявате unicode данни. Непредставимите герои наистина ще бъдат гръцки. Правилното решение е:уверете се, че колоната ви е unicode. Бъркането с кодирането на колони може работа, но по дяволите това е много работа в сравнение с простото използване на уникод.
Dapper предава нещата "както са" на ADO.NET; какво прави доставчикът зависи от доставчика. Има има начин да му кажете да избира между ANSI и Unicode, когато изпраща данни в базата данни обаче - чрез DbString
, т.е.
conn.Execute(sql, new {
id, name,
desc = new DbString { IsAnsi = true, Value = desc }
});
Това също ви позволява да контролирате дължината и т.н. Ние обаче не контролираме кодирането тук; кодирането обикновено е свойство на самата база данни или на доставчика. Ако MySQL има някои специални начини за контролиране на това в ADO.NET, аз съм „на всички уши“, но първо:трябва да го накарате да работи в необработен ADO.NET.