疑わしい ここで起こっていることは単純です。データベースに非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で動作させる必要があります。