首页 新闻 会员 周边 捐助

在Visiual Studio 2019中使用C# MVC+My SQL+EF开发遇到的问题

0
悬赏园豆:30 [已解决问题] 解决于 2023-05-31 11:52

在做的系统,打算采用C# MVC+My SQL+EF进行开发,用的编辑器开始是Visiual Studio 2022,因在添加实体数据模型时,无法添加My SQL数据源,在网上查了一下,有同行遇到相同的问题,反映原因是mysql-for-visualstudio和mysql-connector-net 不支持Visiual Studio 2022,于是安装了Visiual Studio 2019,安装了mysql-for-visualstudio-1.2.9和mysql-connector-net-8.0.14,本机安装的My SQL版本是8.0.16,项目中引用的EntityFramework版本是6.0.0。
编写程序后运行,显示如下错误:
内部异常InvalidOperationException: 无法为具有固定名称“MySql.Data.MySqlClient”的 ADO.NET 提供程序加载在应用程序配置文件中注册的实体框架提供程序类型“MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.EntityFramework, Version=8.0.14.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d”。请确保使用限定程序集的名称且该程序集对运行的应用程序可用。
在网上查了不少,按照网友说的方法都试过了,还是没有解决。
请大家帮忙看看,谢谢!

0724job的主页 0724job | 初学一级 | 园豆:41
提问于:2023-05-28 12:12

根据 MySQL for Visual Studio官网的安装推荐(地址:https://dev.mysql.com/doc/visual-studio/en/visual-studio-install.html),将MySql.Data 8.0.16升级到MySql.Data 8.0.18,MySql.Data.EntityFramework版本更新到8.0.18.0,问题终于解决,谢谢!

0724job 1年前
< >
分享
最佳答案
0

这个问题通常是由于配置文件中的提供程序名称不匹配或程序集无法加载所致。下面是一些可能的解决方法:

检查配置文件:确保在项目的配置文件(通常是app.config或web.config)中,提供程序名称与安装的MySQL连接器版本相匹配。确保以下内容正确设置:
xml
Copy code
<entityFramework>
<providers>
<provider invariantName="MySql.Data.MySqlClient"
type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.EntityFramework" />
</providers>
</entityFramework>
检查程序集引用:确保在项目中引用了正确版本的MySQL连接器。请检查项目的引用并确保版本号与您安装的MySQL连接器版本一致。

清理和重新生成项目:尝试清理解决方案并重新生成项目,以确保所有引用和配置文件正确更新。

检查MySQL连接器版本:确保您安装的MySQL连接器版本与您正在使用的Entity Framework版本兼容。您可以在MySQL连接器的文档中查找兼容性信息。

如果上述方法都没有解决问题,您可以考虑以下几点:

尝试使用较新或较旧版本的MySQL连接器,看是否能够解决兼容性问题。
在安装MySQL连接器时,确保选择了与Visual Studio 2019相对应的版本。
查看MySQL连接器和Entity Framework的文档、支持论坛或社区,看是否有其他用户遇到相同的问题并找到解决方案。
如果问题仍然存在,建议咨询MySQL连接器和Entity Framework的官方支持,他们可以提供更详细和具体的帮助

收获园豆:20
Technologyforgood | 大侠五级 |园豆:7775 | 2023-05-30 23:01
其他回答(1)
0
收获园豆:10
dudu | 园豆:29570 (高人七级) | 2023-05-28 12:16

我电脑安装的My SQL版本是8.0.16,无法安装MySql.Data.Entity.EF6,在VS2019中用NuGet将MySql.Data版本更新到8.0.16.0,MySql.Data.EntityFramework版本更新到8.0.16.0,即和My SQL版本一致,但是还是不行!

支持(0) 反对(0) 0724job | 园豆:41 (初学一级) | 2023-05-28 16:55

mysql-connector-net版本也更新到8.0.16了

支持(0) 反对(0) 0724job | 园豆:41 (初学一级) | 2023-05-28 16:58

@0724job: 现在的错误提示是什么?

支持(0) 反对(0) dudu | 园豆:29570 (高人七级) | 2023-05-28 18:51

@dudu: 内部异常InvalidOperationException: 无法为具有固定名称“MySql.Data.MySqlClient”的 ADO.NET 提供程序加载在应用程序配置文件中注册的实体框架提供程序类型“MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.EntityFramework, Version=8.0.16.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d”。请确保使用限定程序集的名称且该程序集对运行的应用程序可用。

支持(0) 反对(0) 0724job | 园豆:41 (初学一级) | 2023-05-28 20:30

MySql.Data.EntityFramework用哪个版本,就提示哪个版本的错误

支持(0) 反对(0) 0724job | 园豆:41 (初学一级) | 2023-05-28 20:39

@0724job: web.config 中 entityFramework -> providers 是如何配置的?

支持(0) 反对(0) dudu | 园豆:29570 (高人七级) | 2023-05-29 08:47

@dudu: <entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="mssqllocaldb" />
</parameters>
</defaultConnectionFactory>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
<provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.EntityFramework, Version=8.0.16.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"></provider>
</providers>
</entityFramework>

支持(0) 反对(0) 0724job | 园豆:41 (初学一级) | 2023-05-29 14:31

@0724job: 安装一下这个 MySql.Data 8.0.16 nuget 包试试 https://www.nuget.org/packages/MySql.Data/8.0.16

支持(0) 反对(0) dudu | 园豆:29570 (高人七级) | 2023-05-29 16:16

@dudu: Model层,DAL层,Web程序都安装了MySql.Data 8.0.16,还是一样的报错

支持(0) 反对(0) 0724job | 园豆:41 (初学一级) | 2023-05-29 16:20

@0724job: 建议 把 provider type 中 MySql.Data.EntityFramework 改为 MySql.Data.Entity.EF6 试试

另外,提供一个参考 https://stackoverflow.com/a/42309674/5989202

支持(0) 反对(0) dudu | 园豆:29570 (高人七级) | 2023-05-30 16:16
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册