EF使用MySQL

新项目需要使用MVC+EF+MySQL,以前使用的数据库都是微软的亲儿子SQL Server,所以在使用的时候基本没有遇到过什么问题,但是这次在使用MySQL的时候却一直出现问题,看到的博客很多,千篇一律还没能解决问题,整理此博客,用以记录与分享

EF如何使用SQL Server作为数据源不再多说,不太了解的话查看此博客,下面将讲述EF如何使用MySQL ,本次开发环境为 VS2017,MySQL版本为:MySQL5.5(影响不大)


1.配置环境

添加实体数据模型
在项目 > 添加 > 新建项 > 数据 > ADO.NET实体数据模型 > 添加 > 从数据生成 > 新建连接
选择数据源
在这里可以看到,并没有MySQL的数据源。
这是因为没有安装MySQL与VS的集成组件下载地址和MySQL连接组件下载地址,安装完毕后就有了。
在这里插入图片描述

2.使用Nuget 安装 MySQL.Data.Entity 和 MySQL.Data

划重点,这里容易出问题

常见问题

(1) .闪退

在上一步,安装完 mysql-connector-net 组件mysql-for-visualstudio 组件后,虽然在VS上出现了 MySQL Database 选项,但是如果直接点击继续的话,会出现闪退。这是因为没有在Nuget中安装 MySQL.Data.Entity 和 MySQL.Data 这两个包。

如同在使用 SQL Server 作为数据源的时候,需要在 Nuget 中安装 EntityFramwork 包,才能正常创建ADO.NET实体数据模型,这里也是一样,如果不安装 MySQL.Data.Entity 和 MySQL.Data 这两个包,同样无法创建以 MySQL 为数据源的 ADO.NET 实体数据模型。

(2) .您的项目引用了最新实体框架;但是,找不到数据链接所需的与版本兼容的实体框架数据库提供程序……

上面在Nuget中,安装过 MySQL.Data.Entity 和 MySQL.Data 这两个包后,应该就可以进入下一步了,但是这里面可能还会遇到另外一个问题 您的项目引用了最新实体框架;但是,找不到数据链接所需的与版本兼容的实体框架数据库提供程序…… 如图所示:
您的项目引用了最新实体框架;但是,找不到数据链接所需的与版本兼容的实体框架数据库提供程序
这个问题困扰了我很久,在网上找到了很多关于这个问题的博客,虽然博主都给了解决方案,但是我使用那些解决方案并没有能很好的解决问题,最后找到了其他的、更简单的解决方案解决了问题

大家还记得前面安装的 mysql-connector-net 组件 吗, MySQL官网上这个组件的版本最新的是 8.0.12,但是 VS2017 的 Nuget 包管理器中 MySQL.Data.Entity 稳定版最新版本为6.10.8 MySQL.Data稳定版最新版本为 8.0.12 ,出现上面的报错,就是因为这三者版本不一致,三者版本必须一致 ,否则就会报这个错误!

三者版本

可以先添加指定版本的 MySQL.Data.Entity 这样会自动添加上对应版本的 MySQL.Data

这样就可以顺利创建 ADO.NET实体数据模型了
在这里插入图片描述

(3) .上述三者版本一致,但是仍然不能正常创建

检查项目的 .netframwork 版本,不同的 MySQL.Data.Entity 版本有不同的 **.netframwork ** 最低版本支持,在 packages 文件夹或 Nuget 中查看所需支持的最低 .netframwork 版本,检测所建项目的 .netframwork 版本是否符合要求。

(4) 给定关键字不在字典中

这个问题开始并没有碰到,一切正常,不过后来在别人电脑上操作,上午创建一切正常,但是下午就出现了这个问题,然后就一直无法创建,在CSDN上发现了一篇博客,解决了问题,后面为参考博客原文:

——————————————————————参考博客———————————————————————

导致这个问题的原因有很多,比如数据库编码不一致、mysql connector的版本不一致等等

解决办法:

1.确报VS中使用的MySQL版本(NuGet获取相应即可)与当前电脑安装的Mysql Connector版本一致;

2.关闭VS ,在系统盘中找到文件 DefaultView.SEView 并删除。

通常路径为:用户\AppData\Microsoft\VisualStudio\xx\ServerExplorer

参考原文链接:https://blog.csdn.net/iceagezh/article/details/78924154

——————————————————————参考博客End—————————————————————

我使用的是第二种方案解决的问题,因为前面三者的版本都一致,不过 DefaultView.SEView 这个文件并不是很好找,根据博主给的地址没有找到,我使用的是 Everything 软件找到的这个文件,并删除,找到了2个这个文件,都删除了,通过删除后的VS的状态,怀疑这个文件是用来保存每次连接数据库的信息文件,因为删除过这个文件后曾经在VS中使用EF连接数据库的账号密码都清空了,不过已经能正常创建 ADO.NET 实体数据模型了。

总结

这次遇到了不少的问题,但是本质上来说也算不上是特别严重的问题,VS2017是真的好用,微软对亲儿子和其他人家的儿子态度真是不同! ?

下面是问题解决总结:

  1. 安装 mysql-connector-net 组件 和 **mysql-for-visualstudio **组件,mysql-for-visualstudio 组件无版本要求,但是 mysql-connector-net 组件需要与后面在 Nuget 中引用的 MySQL.Data.Entity 和 MySQL.Data 版本一致。如果不安装这两个组件,在选择数据源的时候不会出现MySQL Database选项
  2. “引用了最新的实体框架,但是找不到数据链接所需的与版本兼容的实体框架数据库提供程序…”,检查 mysql-connector-net 组件、 MySQL.Data.Entity 包、MySQL.Data 包,三者的版本是否一致
  3. 不能引用 MySQL.Data.Entity 包、MySQL.Data 包,检查项目的 .netframework 版本是否满足这两个包的最低版本需求。
  4. “给定关键字不在字典中”,关闭VS,找到并删除 DefaultView.SEView 文件。
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值