关闭

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

标签: VS2013mysqlado.netEF6
2932人阅读 评论(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重开,重新生成工程,应该就能成功了。

0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

VS2013下使用创建sqlite的ADO.NET实体数据模型

1. 安装DDEX(aka Data Designer Extensibility) 2. NuGet获取EF6实体最新版本以及获取System.Data.SQLite.EF6 3. 工程修改为x...
  • smilingc
  • smilingc
  • 2016-06-20 14:39
  • 4152

解决VS2012中没有ado.net实体数据模型(ADO.NET entity data model)的问题

我使用的是VS2012旗舰版,但是一直在“新建项目”中找不到“ADO.NET实体数据模型” 这个选项,尝试了网络上的各种方法,包括安装entity framework,重置模板,甚至重新安装vs201...
  • openzpc
  • openzpc
  • 2013-09-05 16:13
  • 3481

VS2013下使用创建sqlite的ADO.NET实体数据模型

1. 安装DDEX(aka Data Designer Extensibility) 2. NuGet获取EF6实体最新版本以及获取System.Data.SQLite.EF6 3. 工程修改为x...
  • smilingc
  • smilingc
  • 2016-06-20 14:39
  • 4152

C#命名规范,控件、数据类型、ADO.NET

  • 2011-04-11 10:45
  • 25KB
  • 下载

c#写作规范化 ,数据类型,控件,ado.net

  • 2011-07-19 15:22
  • 117KB
  • 下载

解决VS2012中没有ado.net实体数据模型(ADO.NET entity data model)的问题

我使用的是VS2012旗舰版,但是一直在“新建项目”中找不到“ADO.NET实体数据模型” 这个选项,尝试了网络上的各种方法,包括安装entity framework,重置模板,甚至重新安装vs201...
  • openzpc
  • openzpc
  • 2013-09-05 16:13
  • 3481

ADO.net实体框架访问不到数据库最新数据问题

我最近在开发中使用ADO.net实体框架
  • fufudage
  • fufudage
  • 2014-07-09 18:28
  • 444

C#命名规范,控件、数据类型、ADO.NET等

数据类型 数据类型简写 标准命名举例 Array arr arrShoppingList Boolean      ...
  • ArvinStudy
  • ArvinStudy
  • 2011-12-09 09:37
  • 286

C#命名规范,控件、数据类型、ADO.NET等

数据类型数据类型简写标准命名举例Array arr arrShoppingList Boolean                 ...
  • andycode
  • andycode
  • 2011-07-28 08:53
  • 373

SQL Server 数据类型映射 (ADO.NET)

原文:https://msdn.microsoft.com/zh-cn/library/cc716729.aspx SQL Server 和 .NET Framework 基于不同的类型系统...
  • Joyhen
  • Joyhen
  • 2015-05-12 01:42
  • 1510
    个人资料
    • 访问:42611次
    • 积分:493
    • 等级:
    • 排名:千里之外
    • 原创:17篇
    • 转载:1篇
    • 译文:0篇
    • 评论:2条
    文章分类
    最新评论