Failed to load provider `MySql.Data.MySqlClient` - 找不到请求的 .Net Framework Data Provider

2021-03-20  乐帮网

mysql

使用工具VS 2019 ,使用C#编写了一个netcore项目的数据库相关操作的封装,第一步就是写T4模板从数据库自动生成实体类,在运行T4的时候发现输出如下错误:Failed to load provider `MySql.Data.MySqlClient` - 找不到请求的 .Net Framework Data Provider。

这个在网上搜索一堆,都是说在config中添加数据库映射节点,有的还复制mysql.data.dll。我想说这种解决方法不正确,并非推荐方案,下面我说一下正确的解决方案。里面有一些细节请君重视。

首先到mysql的官网下载MySQL的数据库驱动,下载地址如下:https://dev.mysql.com/downloads/
这里要注意的是我们选择的是Connector/NET,并不是使用ODBC。如下图:

link

进去后发现只有32位的,这个就对啦,信息如下:
Windows (x86, 32-bit), MSI Installer    8.0.23    4.1M    
Download
(mysql-connector-net-8.0.23.msi)
我们只需要下载mysql-connector-net-8.0.23.msi一直下一步安装成功就好了。

到这里就完成了吗?答案是否定的,此时如果我们去C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\machine.config里看一看,它就会自动添加了mysql相关驱动信息。主要如下:

  <system.data>
    <DbProviderFactories>
      <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>

安装完成后,我们依然需要关闭VS2019,然后再重新打开VS2019运行T4模板,这才算完成。终归到底是我们数据库连接串里用到了providerName="MySql.Data.MySqlClient" 通过它来动态加载数据库的驱动。

 

公众号二维码

关注我的微信公众号
在公众号里留言交流
投稿邮箱:1052839972@qq.com

庭院深深深几许?杨柳堆烟,帘幕无重数。
玉勒雕鞍游冶处,楼高不见章台路。
雨横风狂三月暮。门掩黄昏,无计留春住。
泪眼问花花不语,乱红飞过秋千去。

欧阳修

付款二维码

如果感觉对您有帮助
欢迎向作者提供捐赠
这将是创作的最大动力