目前的项目涉及到数据库的问题,原先的方案是使用Access数据库,因为数据量不大,界面友好,而且软件使用C#编写,就认为用微软自家的东西会更安全可靠一些。 但是,这几天在学习的过程中才发现Entity Framework竟然不支持Access数据库,而且linq to sql也不支持。但还是希望尽量能用上强大的EF框架。 由于EF6直接支持的是SQL Server数据库,一个是因为收费,另外是感觉大材小用,故而转向MySQL数据库,但是默认情况下是不支持的,但是网上有一些插件可以解决这一问题,下面是解决的简单步骤: 使VS和EF6支持MySQL 1.安装mysql server 进入http://dev.mysql.com/downloads/mysql/下载,可以选择自己需要的版本进行下载 2.安装MySql的VS插件 进入http://dev.mysql.com/downloads/windows/visualstudio/下载mysql数据库的VS插件 3.安装用于.net连接程序 进入http://dev.mysql.com/downloads/connector/下载连接程序,因为我用到的是.net平台,因此选择其中的.net连接程序 4.使用Nuget Packages(Nuget 程序包管理器)安装EF 使用命令 Install-Package EntityFramework 5.可选项安装mySql ef6 支持 Install-Package MySql.Data.Entity.EF6 这个东西在安装connector后就有了。 6.修改app.config(这一步骤在新版本中已经不需要了) <entityFramework> <defaultConnectionFactory type="MySql.Data.Entity.MySqlConnectionFactory, MySql.Data.Entity.EF6" /> <providers> <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6"></provider> <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" /> </providers> </entityFramework> MySQL服务的绿色安装 一、MySQL的下载 Mysql官方网站:http://www.mysql.com/,MySQL(GPL版)的下载地址:http://dev.mysql.com/downloads/mysql/。从官方网站可以找到两种文件包,一种是msi安装程序,另一种是zip压缩包。本人喜欢清爽的方式,所以下载的是ZIP压缩包。 二、MySQL的安装 解压出下载的文件mysql-5.6.29-win32.zip(有x86和x64两个版本)到任一目录,防止出现未知问题,最好放在非系统盘的非中文目录下,我的位置C:\Program Files\mysql-5.6.29-win32。打开文件夹复制一份my-default.ini为my.ini的配置文件。 打开my.ini文件,相关配置修改如下 # For advice on how to change settings please see # http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html # *** DO NOT EDIT THIS FILE. It's a template which will be copied to the # *** default location during install, and will be replaced if you # *** upgrade to a newer version of MySQL. [mysqld] # Remove leading # and set to the amount of RAM for the most important data # cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%. innodb_buffer_pool_size = 128M # Remove leading # to turn on a very important data integrity option: logging # changes to the binary log between backups. # log_bin # These are commonly set, remove the # and set as required. #mysql根目录 basedir ="C:\Program Files\mysql-5.6.29-win32" #数据文件存放目录 datadir ="C:\Program Files\mysql-5.6.29-win32\data" # port = ..... 端口,默认3306 # server_id = ..... 服务实例的唯一标识 # Remove leading # to set options mainly useful for reporting servers. # The server defaults are faster for transactions and fast SELECTs. # Adjust sizes as needed, experiment to find the optimal values. # join_buffer_size = 128M # sort_buffer_size = 2M # read_rnd_buffer_size = 2M sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES #服务端的编码方式 character-set-server=utf8 [client] #客户端编码方式,最好和服务端保存一致 loose-default-character-set = utf8 [WinMySQLadmin] Server = "C:\Program Files\mysql-5.6.29-win32\bin\mysqld.exe" 上面设置为了保证服务正常运行,根据自己需要调整参数,修改后要重启服务。 三、注册MySQL服务 开始——运行——cmd(以管理员身份运行),然后cd到mysql安装目录的bin下面,我的目录就是C:\Program Files\mysql-5.6.29-win32\bin,然后执行mysqld -install,提示服务安装成功!运行services.msc一看,确实有一个名为MySQL的服务了,启动它。有时启动失败,根据情况调整参数即可。 到这儿mysql安装就算完成了。 四、登录维护MySQL MySQL的默认用户名是root,密码为空。 怎么登录?还是开始——运行——cmd,cd到bin目录下,然后执行mysql -u root -p,提示输入密码,由于第一次运行,密码为空可以直接回车。 还是给数据库设个密码吧。输入exit退出登录。然后运行C:\Program Files\mysql-5.6.29-win32\bin\mysqladmin -uroot -p password <新密码>,将<新密码>替换为你的自定义密码,然后按回车。这时会提示输入密码,其实是指的原密码,原密码因为是空,所以这里再回车即可完成设置。然后用上面的方法和新密码登入mysql,即可正常工作。 运行show variables like '%version%'查看数据库相关信息 至此,整个数据库的安装完成。 五、开启远程登录 mysql安装完成后默认只能本机(就是localhost)登录, 我们需要开启远程登录才方便使用。开启方法有很多,我说一下其中一个方法: x:\>mysql -u root -p 密码 //登录系统 mysql> use mysql; //切换数据库 mysql> update user set host = '%' where user = 'root'; //上面这句话有时出现一个错误 ERROR 1062 (23000): Duplicate entry '%-root' for key 'PRIMARY' //不过这时你查询一下user表发现已经更新一条记录了,下面这句话 mysql> select host, user from user; //直接执行这句,其实就是刷新权限 mysql> flush privileges; Loading... 目前的项目涉及到数据库的问题,原先的方案是使用Access数据库,因为数据量不大,界面友好,而且软件使用C#编写,就认为用微软自家的东西会更安全可靠一些。 但是,这几天在学习的过程中才发现Entity Framework竟然不支持Access数据库,而且linq to sql也不支持。但还是希望尽量能用上强大的EF框架。 由于EF6直接支持的是SQL Server数据库,一个是因为收费,另外是感觉大材小用,故而转向MySQL数据库,但是默认情况下是不支持的,但是网上有一些插件可以解决这一问题,下面是解决的简单步骤:<!--more--> <h3>使VS和EF6支持MySQL</h3> <h4>1.安装mysql server</h4> 进入<code>http://dev.mysql.com/downloads/mysql/</code>下载,可以选择自己需要的版本进行下载 <h4>2.安装MySql的VS插件</h4> 进入<code>http://dev.mysql.com/downloads/windows/visualstudio/</code>下载mysql数据库的VS插件 <h4>3.安装用于.net连接程序</h4> 进入<code>http://dev.mysql.com/downloads/connector/</code>下载连接程序,因为我用到的是.net平台,因此选择其中的.net连接程序 <h4>4.使用Nuget Packages(Nuget 程序包管理器)安装EF</h4> 使用命令 <code>Install-Package EntityFramework</code> <h4>5.可选项安装mySql ef6 支持</h4> <code>Install-Package MySql.Data.Entity.EF6</code> 这个东西在安装connector后就有了。 <h4><del>6.修改app.config</del>(这一步骤在新版本中已经不需要了)</h4> <pre class="lang:default decode:true"><entityFramework> <defaultConnectionFactory type="MySql.Data.Entity.MySqlConnectionFactory, MySql.Data.Entity.EF6" /> <providers> <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6"></provider> <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" /> </providers> </entityFramework></pre> <h3>MySQL服务的绿色安装</h3> <h4>一、MySQL的下载</h4> Mysql官方网站:<code>http://www.mysql.com/</code>,MySQL(GPL版)的下载地址:<code>http://dev.mysql.com/downloads/mysql/</code>。从官方网站可以找到两种文件包,一种是msi安装程序,另一种是zip压缩包。本人喜欢清爽的方式,所以下载的是ZIP压缩包。 <h4>二、MySQL的安装</h4> 解压出下载的文件<code>mysql-5.6.29-win32.zip</code>(有x86和x64两个版本)到任一目录,防止出现未知问题,最好放在非系统盘的非中文目录下,我的位置<code>C:\Program Files\mysql-5.6.29-win32</code>。打开文件夹复制一份<code>my-default.ini</code>为<code>my.ini</code>的配置文件。 打开<code>my.ini</code>文件,相关配置修改如下 <pre class="lang:default decode:true"># For advice on how to change settings please see # http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html # *** DO NOT EDIT THIS FILE. It's a template which will be copied to the # *** default location during install, and will be replaced if you # *** upgrade to a newer version of MySQL. [mysqld] # Remove leading # and set to the amount of RAM for the most important data # cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%. innodb_buffer_pool_size = 128M # Remove leading # to turn on a very important data integrity option: logging # changes to the binary log between backups. # log_bin # These are commonly set, remove the # and set as required. #mysql根目录 basedir ="C:\Program Files\mysql-5.6.29-win32" #数据文件存放目录 datadir ="C:\Program Files\mysql-5.6.29-win32\data" # port = ..... 端口,默认3306 # server_id = ..... 服务实例的唯一标识 # Remove leading # to set options mainly useful for reporting servers. # The server defaults are faster for transactions and fast SELECTs. # Adjust sizes as needed, experiment to find the optimal values. # join_buffer_size = 128M # sort_buffer_size = 2M # read_rnd_buffer_size = 2M sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES #服务端的编码方式 character-set-server=utf8 [client] #客户端编码方式,最好和服务端保存一致 loose-default-character-set = utf8 [WinMySQLadmin] Server = "C:\Program Files\mysql-5.6.29-win32\bin\mysqld.exe"</pre> 上面设置为了保证服务正常运行,根据自己需要调整参数,修改后要重启服务。 <h4>三、注册MySQL服务</h4> 开始——运行——cmd(以管理员身份运行),然后cd到mysql安装目录的bin下面,我的目录就是<code>C:\Program Files\mysql-5.6.29-win32\bin</code>,然后执行<code>mysqld -install</code>,提示服务安装成功!运行<code>services.msc</code>一看,确实有一个名为MySQL的服务了,启动它。有时启动失败,根据情况调整参数即可。 到这儿mysql安装就算完成了。 <h4>四、登录维护MySQL</h4> MySQL的默认用户名是root,密码为空。 怎么登录?还是开始——运行——cmd,cd到bin目录下,然后执行<code>mysql -u root -p</code>,提示输入密码,由于第一次运行,密码为空可以直接回车。 还是给数据库设个密码吧。输入exit退出登录。然后运行<code>C:\Program Files\mysql-5.6.29-win32\bin\mysqladmin -uroot -p password <新密码></code>,将<code><新密码></code>替换为你的自定义密码,然后按回车。这时会提示输入密码,其实是指的原密码,原密码因为是空,所以这里再回车即可完成设置。然后用上面的方法和新密码登入mysql,即可正常工作。 运行<code>show variables like '%version%'</code>查看数据库相关信息 至此,整个数据库的安装完成。 <h4>五、开启远程登录</h4> mysql安装完成后默认只能本机(就是localhost)登录, 我们需要开启远程登录才方便使用。开启方法有很多,我说一下其中一个方法: <pre class="lang:default decode:true ">x:\>mysql -u root -p 密码 //登录系统 mysql> use mysql; //切换数据库 mysql> update user set host = '%' where user = 'root'; //上面这句话有时出现一个错误 ERROR 1062 (23000): Duplicate entry '%-root' for key 'PRIMARY' //不过这时你查询一下user表发现已经更新一条记录了,下面这句话 mysql> select host, user from user; //直接执行这句,其实就是刷新权限 mysql> flush privileges;</pre> © 允许规范转载 赞 如果觉得我的文章对你有用,请随意赞赏