如何使用ef codefirst连接mysql数据库?

我们这篇文章介绍怎么使用ef连接mysql

作者的环境

vs2017、win10、mysql5.x

前言

一般在ef中,默认是使用sqlserver数据库。
为什么我们要使用mysql呢?
一方面现在的数据库多种多样,发展到了非关系数据库、内存数据存储等,不得不用其他的软件;
另一方面c#很早也开始了开源与支持多平台(core)的路程

开始新建项目

我们这里新建的是webapi项目,当然你喜欢什么类型项目都一样。
我们新建项目叫efandmysql

开始安装包

install-package mysql.data.entity
我们这里的版本是6.9.9
此包因为是依赖ef包的,所以安装此包时会自动安装ef包。

开始添加codefirst

项目建完后,我们新建一个数据模型:右键->新建项->数据->ado.net实体数据模型。名字为model,如下图:

点击添加后,我们选择【空code first模型】

配置web.config

安装完成后,我们配置webconfig文件。

把原来的entityframework节点换成:

  <entityframework codeconfigurationtype="mysql.data.entity.mysqlefconfiguration, mysql.data.entity.ef6">
    <defaultconnectionfactory type="system.data.entity.infrastructure.sqlconnectionfactory, entityframework"/>
    <providers>
      <provider invariantname="system.data.sqlclient" type="system.data.entity.sqlserver.sqlproviderservices, entityframework.sqlserver" />
      <provider invariantname="mysql.data.mysqlclient" type="mysql.data.mysqlclient.mysqlproviderservices, mysql.data.entity.ef6"></provider>
    </providers>
  </entityframework>

把原来的connectionstrings换成我们mysql的连接:

<connectionstrings>
    <add name="model" connectionstring="data source=localhost;port=3306;initial catalog=efmysql;user id=root;password=root;" providername="mysql.data.mysqlclient"/>
  </connectionstrings>

值得注意的是,程序是怎么验证我们连接的是mysql数据库,而不是sqlserver呢?答案就在connectionstring中的providername=”mysql.data.mysqlclient”。 如果我们想用sqlserver或其他数据库的连接,导入相应的包,换连接与providername就可以了。

输入命令与验证

在程序包管理器控制台以此输入:
enable-migrations
add-migration init
update-database

在看看我们的mysql,成功安装了efmysql的数据库:

到此,结束配置

 转载 https://www.cnblogs.com/alunchen/p/7188562.html