VS2017使用MySQL和EntityFramework闪退解决方案

现象

1.VS2017新建工程使用NuGet添加最新版本的Mysql.Data和Mysql.Data.Entity引用。此处的版本分别为8.0.13和6.10.8
1.png

2.添加ADO.NET实体数据模型,设置相关数据库信息。正常情况下设置完数据库连接信息以后点击下一步会出现设置界面闪退情况。
2.png

原因

因为本机安装的mysql-connector-net的Mysql.Data.Entity的版本与项目引用的Mysql.Data.Entity版本不一致导致。必须确认两个DLL的版本号一致。

解决方案

MySQL官网下载6.10.8版本的的 mysql-connector-net。卸载原有版本,重新安装此版本即可。
另外如果在设置数据模型中无法添加MySQL连接,需要安装 MySQL for Visual Studio

已知问题

.NETFramework版本为v.4.5.2的也会出现闪退错误,建议选择v4.7.2

MySql.Data.Entity 6.10.8 与 MySql.Data 8.0.13不兼容,在调用SaveChanges方法的时候会报错 解决方案参考
stackoverflow

1.更新MySql.Data 版本

2.更新MySql.Data.Entity 版本

如果全部更新到兼容8.0 版本,那么mysql-connector-net的版本保持最新版本即可,正常引用版本如下:
3.png

Ubuntu Server 18.04 安装Redis

源安装

sudo apt-get update
sudo apt-get install redis-serve

在 /usr/bin 目录下会出现Redis 相关文件
微信图片_20181009115104.png

redis-bemchmark: 官方Redis性能测试工具
redis-server: Redis服务器
redis-cli: Redis命令行客户端
redis-check-aof: AOF文件修复工具
redis-check-dump: RDB文件检测工具

启动

redis-server #默认方式启动,非守护进程
redis-server /etc/redis/redis.conf #使用配置文件启动,守护进程

测试

微信图片_20181009115108.png

操作

redis-cli shutdown #关闭服务
/etc/init.d/redis-server stop # 停止
/etc/init.d/redis-server start # 启动
/etc/init.d/redis-server restart # 重启

修改配置文件

1.允许其他主机登录 bind 127.0.0.1 注释掉 protected-mode 修改成yes
2.最大内存占用 maxmemory
3.缓存淘汰机制 maxmemory-policy 默认为 noeviction 可以根据实际情况设置

noeviction: 不进行置换,表示即使内存达到上限也不进行置换,
所有能引起内存增加的命令都会返回error

allkeys-lru: 优先删除掉最近最不经常使用的key,用以保存新数据

volatile-lru: 只从设置失效(expire set)的key中选择最近最不经常使用的key进行删除,用以保存新数据

allkeys-random: 随机从all-keys中选择一些key进行删除,用以保存新数据

volatile-random: 只从设置失效(expire set)的key中,选择一些key进行删除,用以保存新数据

volatile-ttl: 只从设置失效(expire set)的key中,选出存活时间(TTL)最短的key进行删除,用以保存新数据