我有这门课
public class User
{
public int UserId { get; set; }
public string UserName { get; set; }
public bool IsValidated { get; set; }
}
我正在使用 dapper 用这个 sql 填充它:
var users = connection.Query<User>("SELECT userId, userName, TRUE `IsValidated` FROM user WHERE [...]").ToList();
当我运行这个我得到这个错误:
解析第 2 列时出错 (IsValidated=1 - Int64)
我已经浏览了简洁的代码并且 sqldatareader 说该列是int64
.NET Mysql 连接器似乎认为 'TRUE'(在 MYSQL 中应该是 tinyint)是一个int64
.
我确实发现了这个错误报告,它说对于所有版本的 INT(INT、BIGINT、TINYINT、SMALLINT、MEDIUMINT),.NET 连接器都返回 int64。然而,这是 MySQL 5.0 中的一个错误,并且已修复,我使用的是 5.5。我有 mysql.data 版本 6.4.3.0
我已经“解决”了这个问题,方法是将它全部选择到一个临时表中,IsValidated
列声明为BOOL
,但这是一个糟糕的解决方案。