私はこのクラスを持っています
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)
私はdapperコードをステップスルーしましたが、sqldatareaderはその列がであると言っているint64
ので、.NETMysqlコネクタは「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
が、これはお粗末な解決策です。