无论程序中使用 DataBase First 还是使用 Code First 都需要使用下面的步骤才可以。
1. 安装 mysql
可以选择全部安装,但是作为开发人员,总希望只安装自己需要的部分,所以我都会选择自定义安装,一般只安装 mysql 服务和MySQL Connector Net。但是这里请先安装 mysql 服务,MySQL Connector Net先不要安装,原因下面再说
2. 打开 VS ,使用 Nuget 安装 Entity Framework,现在最新版是 6.0.0.0
3. 使用 Nuget 安装 MySql.Data.Entity ,最新版本是 6.9.9.0,请记住这个版本
4.安装 Mysql for visual studio,不安装这个,新建实体数据模型时看不到 MySql DataBase 数据源,在 Code Frist 模式下也不可用。
5..这个时候再来安装 MySQL Connector Net ,这个版本应该与 MySql.Data.Entity 一致,我就是因为刚开始是 6.9.4,导致使用 DataBase First 方式添加实体数据模型时闪退,删除再安装之后就没有问题了。你不要觉得 使用 Code First 就不需要安装了,仍然需要安装
6. 但是现在虽然不闪退了,但仍然可能报下面一个错误
“ EF连接MYSQL 表'TABLEDETAILS'中的列'ISPRIMARYKEY'的值为DBNULL”
按照下面的方式操作即可:
重启 mysql 服务。
连接到 mysql 服务器,运行下面的代码
use 数据库名称;
set global optimizer_switch='derived_merge=OFF'
备注:有个学生反应使用EF连接mysql数据库,本机开发没问题,但发布到服务器上就报各种错误,原因就在于第4点
最后还要注意一个问题,如果使用EF操纵数据库,数据库连接字符串一定使用下面格式:
Data Source=localhost;port=3306;Initial Catalog=book1;user id=root;password=198412;" providerName="MySql.Data.MySqlClient
关键在于最后必须加上
providerName="MySql.Data.MySqlClient
否则会报错。