VS 2017 + EF6 + MySQL5.7 建立实体模型闪退问题
前记
最近有用到 MySQL 的空间数据这一块。
对于这一块的数据类型,在 .NET 里怎么用不是很清楚。
于是想到看看 EF 里面是怎么用的。结果新建项目,建立实体模型,总是不成功。
最后经过多次尝试、查阅得以解决。
下面就是具体经过。
失败的经历
具体环境是:VS2017 、.NET Framework 4.6 、MySql.Data.Entity 6.9.12
在这个环境下总是不成功,具体是在这一步闪退,也不报错:
在点击“下一步”后,没有进入到下一步,窗口直接关掉。
考虑有可能是 .NET Framework 问题,更换了其他版本不行;
考虑有可能是 MySql.Data.Entity 问题,更换了几个版本测试也还是不行;
查阅有说是,mysql-connector-net 版本问题,我看了下,自己安装的是:mysql-connector-net-6.9.9,对应的把 MySql.Data.Entity 也换为 6.9.9,同样还是报错。
那这是什么问题?
那是 mysql-connector-net 版本 太低了?有推荐是换成 6.9.10,下载发现官网上面不提供这个版本,其他地方可以下载。
在这里发现一个问题:官网能下载的 mysql-connector-net 版本号和 NuGet 上面的 MySql.Data.Entity 版本号是一一对应的(虽然 NuGet 可以用控制台安装任意版本)
基于这个,开始了下面的实验。
成功一试
上面说到的问题,看了官网 mysql-connector-net 有 6.9.12/6.10.7 可下载,一般最新的不一定好用,那就下载 6.9.12,卸载原先的 6.9.9,安装新的 6.9.12.
这次环境:VS2017 、.NET Framework 4.6 、MySql.Data.Entity 6.9.12(有没有发现和上面一样?)
在这里,建模成功!成功来的这里:
到此,实验完成,也成功了。
个人认为:如果遇到 EF + MySQL建模问题,把 mysql-connector-net 版本和 MySql.Data.Entity 版本一致(其中mysql-connector-net 是官网可以下载的),基本可以解决问题。
最后,就是最开始,想看 EF 中对空间数据格式是怎么处理的,结果都好了,却发现 EF 没有映射空间数据(/(ㄒoㄒ)/~~)。
好吧,也是个坑,填了也好