微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决在已注册的 .NET 数据提供程序列表中找不到指定的不变名称“MySql.Data.MySqlClient”

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

 private DbConnection connection;
 connection = DbProviderFactories.GetFactory("MysqL.Data.MysqLClient").CreateConnection();

异常:

DbProviderFactories.GetFactory 在已注册的 .NET 数据提供程序列表中找不到指定的不变名称MysqL.Data.MysqLClient”。

我已经安装了 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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。