This MySqlConnection is already in use. .net core 异步访问mysql引发.

异步代码里,可以有一种操作:
先异步执行这句查询:

var resTask = _repository.Where(w => w.Deleted == 0).ToListAsync();
...do something

然后在需要的地方调用等待,中间可以做很多其他·无关的事,提升效率,调用的时候:

var res = await resTask;

这样就是一种异步的甜头了。
坑在于:
调用的前后最好是放在一段代码里,不要类似如下:

var resTask = _repository.Where(w => w.Deleted == 0).ToListAsync();
if(ture)
{
	var res = await resTask;
}

实测下来,这样的做法,第一次OK的,没问题,第二次就会触发上一次的连接,导致问题(可能是Mysql的专属,其余数据库不知道):
This MySqlConnection is already in use. See https://fl.vu/mysql-conn-reuse
程序里打断点一步步执行根本没用,看着OK的,但去掉断点就寄了。
我这里触发这个照道理应该逻辑上也不会触发,断点下执行OK,而且是特定的那条数据会触发,看到可能会异步后不调用,所以尝试改掉,果然,应该是这个问题。逻辑不能自洽,还得靠实践出真知。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
MySQL Connector/Net 版本所需的 .Net Framework 版本 不同的版本 MySQL Connector/Net 所需的 .Net Framework 版本也是不同的: MySQL Connector/Net 6.9.12 需要 .Net Framework 4.0 或更高版本支持。(2018-04-30, General Availability) MySQL Connector/Ne 6.10.1 需要 .Net Framework 4.5.1 或更高版本支持。 MySQL Connector Net 6.10.2 到最新的 MySQL Connector Net 8.0.20 需要 .Net Framework 4.5.2 或更高版本。 MySQL Connector/NET 6.9.12 支持与 MySQL Server 8.0.3 以及之前版本的MySQL Server连接。 从官方网站下载mysql-connector-net-8.20.0.msi安装之后,安装目录下的Assemblies中只有v4.5.2的MySql.Data.dll,也就是说它需要 v4.5.2 以上版本的 .Net Framework 支持。如果VS项目的目标框架是.NET Framework 4.5.2或更高版本,则引用正常;将项目的目标框架改为.NET Framework 4 再进行编译就会报错,提示“ 未能解析主引用“MySql.Data, Version=...... 该程序集是针对 .NETFramework,Version=v4.5.2 框架生成的......该框架版本高于当前目标框架 .NETFramework,Version=v4.0”。这表明这个 MySQL Connector/Net 的 MySql.Data.dll 需要 .Net Framework v4.5.2 的支持。 如果项目的目标框架是 .Net Framework v4.0 则最高只能使用 MySQL Connector/Net 6.9.12 的 MySql.Data.dll 。而需要注意的是 MySQL Connector/Net 6.9.12 的 MySql.Data.dll 是在2018-04-30发布的,官方文档显示支持与 MySQL Server 8.0.3 及之前的版本的MySQL Server连接。 C#通过MySql.Data.dll连接MySql数据库 在项目中引用组件:MySql.Data.dll (记得复制到本地中选择为true / 或直接把MySql.Data.dll复制到debug文件夹下) 在代码中 using MySql.Data.MySqlClient; ......接下来这里就看你表演了。
mysql.data.dll 6.4.4 for .net2.0 是 MySQL 数据库提供的一个用于 .NET Framework 2.0 的 Managed Provider。这个 DLL 文件包含了一些用于在 .NET Framework 应用程序中访问和操作 MySQL 数据库的类和方法。它可以让开发人员利用 .NET 平台的优势来编写强大和可靠的应用程序,同时与 MySQL 数据库进行交互。 mysql.data.dll 6.4.4 版本是较旧的一个版本,支持 .NET Framework 2.0。它适用于那些仍在使用较旧版本的 .NET Framework 的应用程序开发者。这个 DLL 文件可以通过在应用程序中引用它来使用,然后使用其中的类和方法来连接到 MySQL 数据库、执行查询、插入、更新或删除数据等操作。 通过使用 mysql.data.dll,开发人员可以轻松地在 .NET 应用程序中实现与 MySQL 数据库的通信和交互。他们可以使用像 MySqlCommand、MySqlConnection 这样的类来连接到数据库,使用 MySqlCommand 对象来执行 SQL 查询,并通过 MySqlDataReader 对象读取查询结果。开发人员还可以使用 MySqlCommand 对象来执行插入、更新或删除数据的操作。 mysql.data.dll 还提供了其他一些实用的功能,比如事务支持、连接池管理等,以帮助开发人员更好地操作 MySQL 数据库。 总而言之,mysql.data.dll 6.4.4 for .net2.0 是 MySQL 数据库提供的一个用于连接和操作 MySQL 数据库.NET Framework 2.0 版本的 DLL 文件。通过使用这个 DLL 文件,开发人员可以方便地在 .NET 应用程序中实现与 MySQL 数据库的交互,并进行各种数据库操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值