У меня этот класс
public class User
{
public int UserId { get; set; }
public string UserName { get; set; }
public bool IsValidated { get; set; }
}
И я заполняю его этим sql, используя dapper:
var users = connection.Query<User>("SELECT userId, userName, TRUE `IsValidated` FROM user WHERE [...]").ToList();
Когда я запускаю это, я получаю эту ошибку:
Анализ синтаксического анализа столбца 2 (IsValidated = 1 - Int64)
Я прошел через код dapper, и sqldatareader говорит, что этот столбец int64
, поэтому он выглядит так:.NET Mysql Connector думает, что 'TRUE' (который должен быть tinyint в MYSQL) является int64
.
Я нашел этот отчет об ошибках, в котором говорилось, что для всех версий INT (INT, BIGINT, TINYINT, SMALLINT, MEDIUMINT) соединитель .NET возвращал int64. Однако это была ошибка в MySQL 5.0 и была исправлена, я использую 5.5. У меня есть mysql.data версия 6.4.3.0
Я решил эту проблему, выбрав все это во временную таблицу с столбцом IsValidated
, объявленным как BOOL
, но это паршивое решение.