dapper + mysql 执行的时候是这样用的,
total = this.DB.QuerySingleOrDefault<int>(count_sql, paras); 这一行执行的时候是正常的.
list = this.DB.Query<WReport>(data_sql, paras).ToList(); 这一行执行的时候就报异常了.
报错信息是 “给定的关键字不在字典中”
根据Track信息发现是在取得数据库连接字符串的时候报错的.
很奇怪.
后来经过dnspy的调试,发现mysql 在取得连接字符串的时候会取一个配置 名字叫 “Integrated Security” 然后就报错了.
这就很尴尬了.
后来我想起来我的代码是下面这样写的.
if (reportDBType == "DataCenter_MySql")
{
MySqlConnectionStringBuilder mysqlconnstr = new MySqlConnectionStringBuilder();
mysqlconnstr.Server = dbip;
mysqlconnstr.UserID = dbuser;
mysqlconnstr.Password = dbpassword;
mysqlconnstr.Database = dbname;
mysqlconnstr.Port = uint.Parse(dbport);
mysqlconnstr.AllowZeroDateTime = true;
mysqlconnstr.ConvertZeroDateTime = true;
//mysqlconnstr.IntegratedSecurity = true; 开启这一行就会出错.
mysqlconnstr.SslMode = MySqlSslMode.None;
mysqlconnstr.CharacterSet = "utf8";
MySqlConnection conn = new MySqlConnection(mysqlconnstr.ToString());
return conn;
}
最后实在没办法. 就把mysqlconnstr.IntegratedSecurity = true;这个配置给注释掉了.作用不清楚. 反正没啥问题.