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、然后添加实体,可以正常创建,生成一下项目也没什么问题。

大功告成了

猜你喜欢

转载自blog.csdn.net/qq_33380252/article/details/83009519