以前我自己的项目一直用的是SQL+EF实体,很顺利没有出现什么的问题,最近接手的一个项目是Mysql的数据库,而且已经建好了,也懒得把数据库再导到SQL Server中去了,想尝试一下Mysql+EF,也许有人会说EF这么底的效率,怎们就不明白会有那么的人去用它,EF是存在不灵活等等的缺点,但是他也有优点那,省的写那么多sql语句,对于有技术洁癖的我来说,反正我就是不想看到那么多sql语句,另外还有一点最重要,让别人看不懂啊,好装B嘛。废话少说,进入正题:
环境:
系统:win10 64位
vs版本:2013
Mysql版本:5.7
问题1:
没有“Mysqldatabase”选型
我就不再介绍了,不过我建议你看完后在去测试。
问题2:
一点击“下一步”就会闪退
起初我也是按上面的步骤实施,仍然是不行,慢慢的我发现了问题,那就是版本是否对应,因为我现在再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:
出现这个问题,是因为EntityFramwork安装的版本太高,需要降级版本,在VS中的”程序包管理器控制台“的输入命令:
Install-Package EntityFramework -Version 6.0.0
Install-Package EntityFramework.zh-Hans -Version 6.0.0
就可以实现了,后面的版本根据需要改动,我当时下载的最新版6.2.0,结果就出现错误,改成6.0.0就可以了。
至此基本解决了问题,但是又出现了问题,那就是导入的实体不全,哎接着倒腾把!