MySqlClient 异常:已经有一个打开的 DataReader 与此连接关联

MySqlClient exception: There is already an open DataReader associated with this Connection

我正在尝试从 ASP.NET 中的控制器从 MySql 数据库检索数据,主 class 注册为单例,其中包含从主控制器调用的方法检索数据或将数据插入数据库,现在确保将每个数据 reader 包装到“使用”语句中,一切似乎都正常......但是当我进行压力测试时(有时就像 3用户同时连接)我得到奇怪和不一致的 MySql 错误主要是:

已经有一个与此连接关联的打开的 DataReader。

我也试过:

这令人沮丧,我正在考虑是否完全不使用 MySql?但是迁移到其他东西值得吗?

如果我是你,我不会将主 class 注册为单例,你可以在单例中使用调用数据库的方法。将 class 注册为单例时,意味着在应用程序启动时只能为该 class 创建一个实例。因此,当您对三个用户进行压力测试时,它可能会导致问题,因为您只有一个实例 main class.

我建议在启动时像下面这样注册你的 mysql 数据库 class:

public void ConfigureServices(IServiceCollection services)
{
    services.AddTransient<MySqlConnection>(_ => new 
        MySqlConnection(Configuration["ConnectionStrings:Default"])); //Your connectionstring here
}

通过以上注册,您可以使用依赖注入访问控制器中的 MySql 数据库,并在您的控制器中调用它 Action:

private readonly MySqlConnection _db;

public CheckoutController(MySqlConnection db)
{
    _db = db;
}

public ActionResult Index()
{
    var data = _db.data.ToList();

    return View(data);
}

这是我为 MySql.Net Core 连接器找到的 link: https://mysqlconnector.net/tutorials/connect-to-mysql/