在已注册的 .NET 数据提供程序列表中找不到指定的不变名称 'MySql.Data.MySqlClient'

The specified invariant name 'MySql.Data.MySqlClient' wasn't found in the list of registered .NET Data Providers

我有一个使用 .Net Standard 2.1 开发的 C# 库,该库在基于 .Net Core 3.0 构建的测试控制台应用程序中调用。但是在 运行 时间,GetFactory 抛出异常。

 private DbConnection connection;
 connection = DbProviderFactories.GetFactory("MySql.Data.MySqlClient").CreateConnection();

异常:

DbProviderFactories.GetFactory The specified invariant name 'MySql.Data.MySqlClient' wasn't found in the list of registered .NET Data Providers.

我已经安装了 MySqlConnector 1.2.1。但这没有帮助。并在 app.config 文件中添加以下内容。

<system.data>
 <DbProviderFactories>
  <remove invariant="MySql.Data.MySqlClient" />
  <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=8.0.23.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
</DbProviderFactories>
</system.data>

在此先感谢您的帮助。

您为 app.config 展示的 XML 仅适用于 .NET Framework 应用程序。

对于 .NET Core 2.1 或更高版本,调用 DbProviderFactories.RegisterFactory。您传递的确切参数将取决于您要注册的工厂(以及您安装的 NuGet 包):

// MySqlConnector (my personal recommendation for .NET Core)
DbProviderFactories.RegisterFactory("MySqlConnector", MySqlConnector.MySqlConnectorFactory.Instance);

// MySql.Data (may be needed instead if other code is hard-coded to "MySql.Data.MySqlClient")
DbProviderFactories.RegisterFactory("MySql.Data.MySqlClient", MySql.Data.MySqlClient.MySqlClientFactory.Instance);

有关详细信息,请参阅 Using DbProviderFactories