У меня есть этот класс
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)
Я прошел через щадящий код, и 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
, но это паршивое решение.