在vs2013中使用mysql链接entityFramework常常会遇到这个问题:您的项目引用了最新实体框架;可是,找不到数据链接所需的与版本兼容的实体框架数据提供程序。请退出此向导,安装兼容提供程序,从新生成您的项目,而后再执行操做。mysql
在vs中 使用mysql的问题多的会让人蛋疼。在这里给个妥妥的一条龙解说哈。sql
<无耐心看过程讲解的可直接看最下面>数据库
在建立实体模型的时候 数据源选项极可能没有MySql database,这问题很容易解决,只须要安装 mysql-for-visualstudio 便可解决,这里推荐版本是 mysql-for-visualstudio-1.2.3 。 还须要安装一个 MySQL Connector/Net , 咱们来看一看来自官网的介绍:MySQL 官方的 .NET 驱动程序,MySQL 官方的 .NET 客户端开发包。mysql 数据库最新版dotnet数据库链接驱动。 因此 显而易见,这个程序必须装上,这里推荐版本是 mysql-connector-net-6.8.3 。 PS: 这里提醒下,这个版本不是越高的越合适,得配合你Mysql.data 的版本,目前大部分是使用mysql.data version 6.8.3 这版本。 若是安装高于 mysql-connector-net - 6.8.3 版本 , 安装后会修改VS下的machine.config :框架
<dependentAssembly>ide
<assemblyIdentity name="MySql.Data" publicKeyToken="c5687fc88969c44d" culture="neutral" />
<bindingRedirect oldVersion="6.7.4.0" newVersion="6.8.3.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="MySql.Data.Entity" publicKeyToken="c5687fc88969c44d" culture="neutral" />
<bindingRedirect oldVersion="6.7.4.0" newVersion="6.8.3.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="MySql.Web" publicKeyToken="c5687fc88969c44d" culture="neutral" />
<bindingRedirect oldVersion="6.7.4.0" newVersion="6.8.3.0" />
</dependentAssembly>工具
<add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.8.3.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
3d
这里是安装6.8.3 版本后 修改的machine.config blog
安装6.9.4版本,会时 newversion = "6.9.4" 会致使不少后期问题:例如 引用问题 : could not load file or assembly 'Mysql.Data, Versio=6.8.3' 错误号 : 0x80131040 这样的程序集不匹配问题,在不少论坛上都看到过这个问题,形成的办法也大可能是由于machine.config 被修改,强制指向高版本,致使的程序集不匹配。 图片
固然这里若是经过手动修改machine.config 解决这个问题,能够一时解决,可是会引发后期不少没必要要的问题, 因此建议直接安装 mysql-connector-net - 6.8.3ip
以上这两个安装完以后,恭喜你, 进入下一个错误, vs里 就会提示上述图片的错误。
这个错误的解决方案 网上的答案能够说是 众多纷纭 奇葩朵朵开啊。 其实解决方案很简单,人家都说了,找不到数据链接所需的与版本兼容的实体框架数据提供程序。
这里须要先安装nuget 管理器
在 - 工具 - 库程序包管理器 - 程序包管理器控制台 这里 默认项目, 在PM>后 输入
Install-Package EntityFramework -Version 6.0.0
Install-Package EntityFramework.zh-Hans -Version 6.0.0
Install-Package MySql.Data.Entity.EF6
每一句输完 回车执行
容许从新加载config.
这时候在providers 里 添加一个mysql.data.MysqlClint节点, 这个步骤很重要。
<provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6"></provider>
效果以下
<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.Entity.EF6"></provider>
</providers>
到了这一步 ,从新生成一下方案 妥了!
哈哈 不是微软的亲儿子就是事多!
这里是个小总结。给急性子的朋友看:
需安装:
mysql-for-visualstudio-1.2.3
mysql-connector-net - 6.8.3
nuget 包管理器
nuget 控制台输入
Install-Package EntityFramework -Version 6.0.0
Install-Package EntityFramework.zh-Hans -Version 6.0.0
Install-Package MySql.Data.Entity.EF6
在.config 的providers 加一个节点
<provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6"></provider>
完毕.
哈哈 !!不要问 爱过!