解决VS2013使用MySQL无法创建ADO.NET实体数据类型的问题

标签: VS2013 mysql ado.net EF6
3656人阅读 评论(1) 收藏 举报
分类:

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

原文

环境:

  1. VS2013 + EF6 + MySQL
  2. 已安装 mysql-for-visualstudio-1.1.4
  3. 已安装 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>
  1. 安装更高版本的connector和forvs插件(connector是6.9.8, for vs是1.2.6,均已验证可用);
  2. 可以考虑到MySQL的connector安装目录下(一般位于如下位置,要支持EF6的,一般都是v4.5或者以上了)
MySQL安装目录\MySQL Connector Net 版本号\Assemblies\v4.5

将mysql的相关dll全部拷贝,到这个目录下:

\Microsoft Visual Studio 12.0\Common7\IDE\PrivateAssemblies

理论上2012以及2013都是这个目录,更高版本的VS因为没有安装所以没有尝试。
然后关闭VS重开,重新生成工程,应该就能成功了。

查看评论

ASP.NET MVC 4用ADO.NET实体数据模型连接数据库

ADO.NET实体数据模型连接数据库,既可用来连接SQL Server数据库,也可以用来来接MySQL数据库,非常便捷方便,使用此法在代码具体实现的时候也很方便。     为了正常连接MySQL数据库...
  • vjudge
  • vjudge
  • 2015-04-24 12:54:39
  • 3254

ADO对象模型访问数据库

这几天被数据库这些东西给整头疼了,这些代码,不确切的说是“单词”,认识的真没有几个,OK,先看下面的代码,等一下围绕 ADO对象模型访问数据库分享点东西。 Option Explicit Di...
  • u010282984
  • u010282984
  • 2016-01-31 18:52:45
  • 630

VS 2013下实现通过数据实体模型使用MySql

VS2013 MySql EF6 DBFirst CodeFirst
  • piao90522
  • piao90522
  • 2015-11-13 10:53:12
  • 2628

Visual Studio配置MySql数据库

MySQL Connector/C++ is available as a static or dynamic library to use with your application. This s...
  • jklfjsdj79hiofo
  • jklfjsdj79hiofo
  • 2014-12-20 20:23:39
  • 2886

MYSQL建立外键失败几种情况记录Can't create table不能创建表

当你试图在mysql中创建一个外键的时候,这个出错会经常发生,这是非常令人沮丧的。 像这种不能创建一个.frm 文件的报错好像暗示着操作系统的文件的权限错误或者其它原因,但实际上,这些都不是的,...
  • qq_20545159
  • qq_20545159
  • 2015-01-01 10:25:32
  • 1588

解决VS中没有ADO.NET实体数据模型

解决方案参考如下博客: http://blog.csdn.net/zhangsify/article/details/47444537
  • mynewdays
  • mynewdays
  • 2017-04-12 11:14:27
  • 3591

大家好ado.net 实体数据模型 怎么支持其他数据库?

大家好ado.net 实体数据模型 怎么支持其他数据库?
  • suhe0919
  • suhe0919
  • 2013-08-14 09:20:06
  • 332

ADO.NET操作MySQL数据库

前言        ADO.NET包括5大对象,分别是Connection、Command、DataReader、DataSet、DataAdapter,使用ADO.NET访问数据库有两个步骤:建立数...
  • zh15732621679
  • zh15732621679
  • 2016-12-12 16:44:39
  • 3749

ADO.NET C# 连接MySQL数据库的类库 非常好用的哦!

  • 2009年12月02日 13:32
  • 3.55MB
  • 下载

VS2015 + EF6连接MYSQL

ADO.NET Entity Framework 是微软以 ADO.NET 为基础所发展出来的对象关系对应 (O/R Mapping) 解决方案,不仅支持SQL Server,还支持MySQL、Ora...
  • ZKH_101
  • ZKH_101
  • 2016-09-12 22:55:33
  • 9149
    个人资料
    等级:
    访问量: 5万+
    积分: 553
    排名: 9万+
    最新评论