mysql+ef踩的坑
第一次接触这种方式,碰见了很多坑,在这里总结一下
环境是win7 ,vs2015 mysql5.7
大致步骤:
添加—》新建项—》数据—》ADO.NET实体数据模型—》添加—》从数据库生成—》下一步—》新建连接(连接设置刚刚自己使用的数据库)—》下一步—》选中自己要使用的表,以及视图。存储过程等—》完成
碰见的第一个问题就是下图这个错误
在网上搜到的方法大致如下
1 Install-Package EntityFramework -Version 6.0.0然后Enter
2 Install-Package EntityFramework.zh-Hans -Version 6.0.0
3 Install-Package MySql.Data.Entity.EF6
1和2只要网络是正常的,基本都会成功,但是第三个在执行的时候,通常会报错,如下:
Install-Package : 无法找到程序包“MySql.Data.Entity.EF6”。
所在位置 行:1 字符: 16
+ Install-Package <<<< MySql.Data.Entity.EF6
+ CategoryInfo : NotSpecified: (:) [Install-Package], InvalidOperationException
+ FullyQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PowerShell.Commands.InstallPackageCommand
解决办法:
通过右键项目->添加引用->浏览,把MySQL Connector Net 6.8.3\Assemblies\v4.5下的所有dll文件引用进来,
4 在web.config里面添加provider节点即可:
<provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6"></provider>
这个方法第三步里面安装EF6失败,按照解决方法说的进行操作不起作用,另外我的版本是6.9.6,然后直接跳过这个就把第四个节点加进去了,然后测试,发现还是报错
最后通过跟其他mysql+ef项目对比,发现webconfig里面有个配置,是在 <configSections>节点里面的
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
加上之后就可以正常创建实体了
重新建了个项目,写下具体的步骤
1、建个MVC的web应用程序,生成一下,没什么问题
2、引用里面添加mysql的引用,路径为C:\Program Files (x86)\MySQL\MySQL Connector Net 6.9.6\Assemblies\v4.5
3、修改配置文件,把上面踩坑发现的两个配置都加上,一个section和一个provider,添加引用后section已经自动添加上了,如果没有的话再手动加上
4、然后添加实体,可以正常创建,生成一下项目也没什么问题。
大功告成了