2016.10.28更新
出现下图错误的时候,如果connector和vs插件全部已经安装,请首先检查你的编译器当前是否用的x64环境。今天已经用不同机器(都是win7 64位SP1加VS2013)证实过,只要是指定x64,基本都出现如下错误:
提示语:您的项目使用了最新版本实体框架;但是,找不到进行数据连接所需的与此版本兼容的实体框架数据库提供程序。请退出此向导,安装兼容提供程序,重新生成您的项目,然后再执行此操作。
在改成x86的模式之后,可以正常添加实体,然后再切换到x64编译,即可。测试x64下运行正常。猜测是安装插件是x86版本(虽然mysql官网上提示安装包是x86,但是x86和x64都支持),所以编辑器有某些问题导致无法在x64环境下添加。
2016.10.24更新
编译当中遇到”ProviderManifestToken”的提示语的错误,提示我当前用的6.9.8的版本与edmx文件中的不符合。我就奇了怪了,我工程里面的确都是用nuget获取下来,肯定版本是对的。然后找了很久,stackoverflow里面有一个答案解救了我。
26280396/mysql-connector-with-ef6-in-visual-studio-2013
Visual Studio 12.0\Common7\IDE\PrivateAssemblies 目录里的文件的确可能是以前拷贝错了/什么时候connector自己添加了错误的版本,我按照mysql的安装文件夹里面的拷贝过去之后,关掉VS,重开重新生成,就可以了。
2016.10.14更新
感觉nuget中获取的版本有点奇怪,今天又遇到这个问题,我是直接从nuget获取那三个dll的,一模一样的出现了。然后我对照我一个可以运行的工程,将版本换到一模一样(EF是6.1.3,MySql是6.9.8)然后才可以正常使用。非常奇怪。
PM> Install-Package PackageName -Version VersionNum
原文
环境:
- VS2013 + EF6 + MySQL
- 已安装 mysql-for-visualstudio-1.1.4
- 已安装 mysql-connector-net-6.8.3(支持EF6)
问题现象:
在背景环境的情况下,项目新建项,添加ADO.NET实体数据类型。选择MySQL的数据库之后,在选择使用哪个实体框架的时候,EF6虽然为选取状态(项目本身已经使用EF6框架,此次为数据库迁移),但是无法点击下一步,提示“使用最新框架但是不支持,请关闭并重新安装后再试。”
如下图:
解决方法
百度搜索无解,直接Google + stackoverflow,找到了。
感谢此帖子 StackOverflow - cant-use-a-mysql-connection-for-entity-framework-6
简明:
从NuGet安装MySQL的插件即可,具体是:
MySql.Data
MySql.Data.Entity
已经验证,上述三项为最小安装项,MySql.Data.Entities如果安装则可能继续出现不支持EF6实体框架的问题,请不要安装。
添加上述Nuget引用后,重新生成工程,然后应该可正常添加MySQL的ADO.NET实体了。
如果依然不行,有两个方法:
0. 可能需要修改config文件
<entityFramework codeConfigurationType="MySql.Data.Entity.MySqlEFConfiguration, MySql.Data.Entity.EF6">
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
<providers>
<provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6" />
</providers>
</entityFramework>
- 安装更高版本的connector和forvs插件(connector是6.9.8, for vs是1.2.6,均已验证可用);
- 可以考虑到MySQL的connector安装目录下(一般位于如下位置,要支持EF6的,一般都是v4.5或者以上了)
MySQL安装目录\MySQL Connector Net 版本号\Assemblies\v4.5
将mysql的相关dll全部拷贝,到这个目录下:
理论上2012以及2013都是这个目录,更高版本的VS因为没有安装所以没有尝试。
然后关闭VS重开,重新生成工程,应该就能成功了。