标签:DataReader MySql Connector Dispose
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了标签:DataReader MySql Connector Dispose,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1797字,纯文字阅读大概需要3分钟。
内容图文
![标签:DataReader MySql Connector Dispose](/upload/InfoBanner/zyjiaocheng/886/e2cda9f1b03a4f18b34cf0127516dcc1.jpg)
我所遇到的问题仅在最新版本的MySQL Connector .Net上体现出来(目前为6.10)
多年来,我在MSSQL和MYSQL中都能正常工作以下内容:
>创建DbConnection
>使用先前的连接创建DbCommand
>执行
>获取DbDataReader
>处置DbCommand,而不是连接(在此刻完成,因为它是包装器类)
>从DbDataReader读取数据
所有这些在MSSQL和MYSQL v6.9中都可以正常工作(即使是SQLite,因为包装器类也可以处理)
现在,在MySQL Connector 6.10中,当DbCommand被释放时,DataReader被关闭.
我的问题是:任何人都可以确认这种行为是否会持续下去或将来有可能恢复吗?
具有如此高水平的DB提供程序彼此不同的行为有点奇怪.
我意识到在MySQL开发人员专区上问这个问题可能更好,但是我没有帐户,也许我需要创建一个帐户.
谢谢
解决方法:
这绝对是MySql.Data 6.10:https://github.com/mysql/mysql-connector-net/commit/ae13ac2dc3fd0da24c158b9a40a6e3362d27f05b中的更改
我根据您的步骤(代码在此答案的结尾)向AdoNet.Specification.Tests添加了一个测试,并针对各种提供程序进行了测试.
下列连接器处理得很好:
> dotConnect.Express.for.MySQL v8.10.1031
> MySqlConnector v0.33.1
> MySql.Data v6.9.10
> Microsoft.Data.Sqlite v2.0.0
> System.Data.SQLite v1.0.106
> System.Data.SqlClient v4.4.2
以下两个失败:
> MySql.Data v6.10.5
> MySql.Data v8.0.9-dmr
我认为这是MySql.Data 6.10.x中的回归;不幸的是,提交注释并没有提供任何关于改变这种行为的线索.解决该问题的最佳机会是在https://bugs.mysql.com/提交错误报告.或者,考虑切换到MySqlConnector,这是MySql.Data的OSS替代品,它修复了许多长期存在的错误,并添加了真正的异步支持.
更新:错误报告已创建:MySQL Bug #89159.
重现故障的样本测试代码:
[Fact]
public virtual void Dispose_command_before_reader()
{
using (var connection = CreateOpenConnection())
{
DbDataReader reader;
using (var command = connection.CreateCommand())
{
command.CommandText = "SELECT 'test';";
reader = command.ExecuteReader();
}
Assert.True(reader.Read());
Assert.Equal("test", reader.GetString(0));
Assert.False(reader.Read());
}
}
内容总结
以上是互联网集市为您收集整理的标签:DataReader MySql Connector Dispose全部内容,希望文章能够帮你解决标签:DataReader MySql Connector Dispose所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。