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

没有“Mysqldatabase”选型
解决办法:
这个解决办法的博客很多,这里列出一个详细的:
http://www.cnblogs.com/RushPasser/p/5438334.html
我就不再介绍了,不过我建议你看完后在去测试。
问题2:

一点击“下一步”就会闪退
这个问题的解决办法有很多我列出个参考:
http://www.cnblogs.com/RushPasser/p/5438334.html
起初我也是按上面的步骤实施,仍然是不行,慢慢的我发现了问题,那就是版本是否对应,因为我现在再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盘里面的替换掉,但是出现的闪退跟突然了,无奈重新该回去。
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节点, 这个步骤很重要。
<provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6"></provider>
效果如下
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
<provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6"></provider>
</providers>
问题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就可以了。
至此基本解决了问题,但是又出现了问题,那就是导入的实体不全,哎接着倒腾把!
本文详细记录了在Mysql+EF6环境下遇到的问题及解决方案,包括缺少'Mysqldatabase'选项的解决、安装版本不匹配导致的闪退问题,以及实体不全的后续调整。关键步骤包括安装指定版本的EntityFramework,添加正确的dll引用,并在providers中配置mysql.data.MysqlClient。

1万+

被折叠的 条评论
为什么被折叠?



