Tôi nghi ngờ những gì đang xảy ra ở đây chỉ đơn giản là:cơ sở dữ liệu của bạn có các cột không phải unicode và bạn đang cố gắng lưu trữ dữ liệu unicode. Các ký tự không thể đại diện thực sự sẽ được tô xanh. Cách khắc phục chính xác ở đó là:đảm bảo cột của bạn là unicode. Lộn xộn với các mã hóa cột could làm việc, nhưng chết tiệt đó là rất nhiều công việc so với chỉ sử dụng unicode.
Dapper chuyển những thứ "nguyên trạng" cho ADO.NET; những gì nhà cung cấp làm là tùy thuộc vào nhà cung cấp. Có có một cách để yêu cầu nó chọn giữa ANSI và Unicode khi gửi dữ liệu vào cơ sở dữ liệu, mặc dù - thông qua DbString
, tức là
conn.Execute(sql, new {
id, name,
desc = new DbString { IsAnsi = true, Value = desc }
});
Điều này cũng cho phép bạn kiểm soát độ dài, v.v. Tuy nhiên, chúng tôi không kiểm soát mã hóa nơi đây; mã hóa thường là thuộc tính của chính cơ sở dữ liệu hoặc của trình cung cấp. Nếu MySQL có một số cách riêng để kiểm soát điều đó trong ADO.NET, thì tôi là "tất cả các tai", nhưng trước tiên:bạn cần làm cho nó hoạt động trong ADO.NET thô.