dapper mysql 给定的关键字不在字典中 一个特例

在使用Dapper框架结合MySQL数据库进行数据查询时,作者遇到了特定情况下的异常问题。问题出现在从数据库获取数据并转换为对象列表的过程中,错误提示为“给定的关键字不在字典中”。通过调试发现,异常发生在获取数据库连接字符串时,具体是由于配置项“IntegratedSecurity”的处理不当导致。最终,通过注释掉与IntegratedSecurity相关的配置解决了问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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;这个配置给注释掉了.作用不清楚. 反正没啥问题.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值