以前我自己的项目一直用的是SQL+EF实体,很顺利没有出现什么的问题,最近接手的一个项目是Mysql的数据库,而且已经建好了,也懒得把数据库再导到SQL Server中去了,想尝试一下Mysql+EF,也许有人会说EF这么底的效率,怎们就不明白会有那么的人去用它,EF是存在不灵活等等的缺点,但是他也有优点那,省的写那么多sql语句,对于有技术洁癖的我来说,反正我就是不想看到那么多sql语句,另外还有一点最重要,让别人看不懂啊,好装B嘛。废话少说,进入正题:

环境:

系统:win10 64位

vs版本:2013

Mysql版本:5.7

问题1:

efcore 使用mysql ef6 mysql_Data

没有“Mysqldatabase”选型

我就不再介绍了,不过我建议你看完后在去测试。

问题2:

efcore 使用mysql ef6 mysql_efcore 使用mysql_02

一点击“下一步”就会闪退

起初我也是按上面的步骤实施,仍然是不行,慢慢的我发现了问题,那就是版本是否对应,因为我现在再Mysql官网上看到Connector/Net的最新版本是6.10.6,没想就下载安装了,然后通过Nuget管理安装Mysql.Data.Entity和Mysql.Data,还有EntityFramework 6.2.0 (不要忘了这个),这个得提一下,如果你使用的是VS2013请更新到最新版本,要不再Nuget中搜索没有反应.全部安装完后,就会出现闪退现象,恭喜你跟我一样,请继续看下去:

第一步:

你通过路径C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\PrivateAssemblies里面查看Mysql.data.dll,MySql.Data.Entity.EF6.dll和MySql.Web.dll 的版本,别告诉我你不会产看,如果你的Mysql版本号跟Mysql官网的mysql-connector-net的版本号一致的话,你直接从官网下载,如果不一致官网又不提供的话,你要通过网络下载,我的就不一致,所以我从网站上下载mysql-connector-net-6.9.8.msi,并安装。当然我也试过将高版本的Mysql.Data.dll 文件将c盘里面的替换掉,但是出现的闪退跟突然了,无奈重新该回去。

VS2013 内部集成的Mysql版本:

Mysql.data.dll -Version 6.9.8.0

MySql.Data.Entity.EF6.dll -Version 6.9.8.0

MySql.Web.dll -Version 6.9.8.0

VS2015 内部集成的Mysql版本可能比这个高,具体我也不知道,需要自己查看。

第二步:

通过在vs中”程序包管理器控制台“的输入命令来实现下载和安装所需版本的Mysql.data和Mysql.Data.Entity.EF6,命令如下:

Install-Package EntityFramework -Version 6.0.0

Install-Package EntityFramework.zh-Hans -Version 6.0.0

Install-Package MySql.Data.Entity.EF6

每一句要回车一下,等待安装完成,但在安装Install-Package MySql.Data.Entity.EF6是会出现问题,这时你需要将Mysql.data.dll和Mysql.Data.Entity.EF6.dll引用到项目中,引用可以浏览到路径C:\Program Files (x86)\MySQL\MySQL Connector Net 6.9.8\Assemblies\v4.5中添加,也可以在程序中搜索程序集引用,版本必须和Vs文件下的一致。

第三步:

这时候在providers 里 添加一个mysql.data.MysqlClint节点, 这个步骤很重要。

效果如下

问题3:

efcore 使用mysql ef6 mysql_EF_03

出现这个问题,是因为EntityFramwork安装的版本太高,需要降级版本,在VS中的”程序包管理器控制台“的输入命令:

Install-Package EntityFramework -Version 6.0.0

Install-Package EntityFramework.zh-Hans -Version 6.0.0

就可以实现了,后面的版本根据需要改动,我当时下载的最新版6.2.0,结果就出现错误,改成6.0.0就可以了。

至此基本解决了问题,但是又出现了问题,那就是导入的实体不全,哎接着倒腾把!