(二)2、webapi连接MySQL

既然作为中间件,就需要,前,与前端进行数据交互;后,与数据库进行数据交互,在上一步,我们已经把数据发送出来了,只要在前端调用数据就好,下面我们就介绍如何连接数据库。在(一)部分中,我也已经搭建好了服务器和MySQL了,这里说明一下,不管是本机虚拟机搭建的还是云服务器搭建,都是可以的,一样的。

  动手前让我们思考一下,我们要连接MySQL,但是我们凭什么说连就连,人家MySQL不要面子的吗?

所以在MySQL里面,我们就要创建一个用户(我们安装与配置MySQL中已经创建一个myUser的用户了),然后给这个用户授予操纵数据库的权限,再在webapi里面创建该用户的连接字符串就好了,至于连接字符串是什么,后面会说到的。

  同时又因为在.net core 并没有内置操纵MySQL的工具,所以首先我们就要安装一个工具,来操纵数据库,这个就是EF core(Entity Framework Core),专业术语叫ORM工具(Object Relational Mapping),类似的还有dapper(这个是我第一个使用的ORM工具)。那就先来安装吧

  

   1)工具-Nuget包管理器-管理解决方案的Nuget程序包

    

  2) 浏览-输入MySQL-找到MySQL.Data.EntityFramworkCore,安装

    

  3) 打开目录中的Startup.cs-->ConfigureServices方法,进行数据库配置

复制代码
 public void ConfigureServices(IServiceCollection services)
        {
            //数据库配置
            services.AddDbContext<Join>(options =>
                options.UseMySQL(Configuration.GetConnectionString("DefaultConnection")));
            services.AddMvc();
        }    
复制代码

   这时可能会提示错误,但是不要怕,其中的Join(即上面的蓝色字)先不用管,点中“UseMySQL”,然后点击左边的黄色小灯泡,点击“using Microsoft.EntityFrameworkCore”,然后我们的一个错误就消失了,

然后最上面也会增加一行,灰色的表示还没有使用过的,

 

看着难受的话,可以右键,选择“对Using进行删除和排序”就好

 

4)然后看到橙黄色字体没有“DefaultConnection”,这就是我们的连接字符串…的变量,一般我会把连接字符串放到与Startup.cs目录下的appsetting.json中

复制代码
{
  "ConnectionStrings": {
    "DefaultConnection": "server=192.168.253.129;userid=myUser;pwd=123456;port=3306;database=example;sslmode=none;"
  }, //以上为数据库连接字符串
  "Logging": {
    "IncludeScopes": false,
    "Debug": {
      "LogLevel": {
        "Default": "Warning"
      }
    },
    "Console": {
      "LogLevel": {
        "Default": "Warning"
      }
    }
  }
}
复制代码

至于其中的"server=192.168.253.129;userid=myUser;pwd=123456;port=3306;database=example;sslmode=none;"就是传说中的连接字符串了,但是我们需要在服务器里的MySQL里进行设置了,因为这部分属于MySQL,所以我就不写了,详情请参考安装与配置MySQL

这里就稍微介绍一下参数

server:MySQL所在的服务器的IP地址

userid:被授权的用户名

pwd:被授权的用户名的密码

port:MySQL的端口号,默认3306

database:要用到的数据库

sslmode:至于为什么有这个参数,网上的解释是“链接字符串要加上 SslMode=None 不然会报错误:SSL not supported in this WinRT release.”,因为我一直是加上的,所以也就没遇到过错误。

走起,下一步,相关数据模型(models)的创建

原文地址:https://www.cnblogs.com/inttochar/p/8413107.html