.Net Core 3.0 WebAPI && MySQL 8.0搭建详情

微软在2019年9月24日发布了dotNet Core 3.0和C# 8.0,添加了许多新Features,详情点我。无疑dotNet Core 3.0和一个月之后即将发布的dotNet Core 3.1对于dotNet来说是一个重要的里程碑。

对于MySQL而言,现在越来越多的商业公司使用MySQL来作为自己的主要数据库,虽然MySQL已经迎来了8.0的版本,有着更完善的数据能力,更好的性能,但是还是有很多公司在新项目上使用MySQL5.7。我在技术上很鄙视这样的做法,一旦使用的老技术Out of support,对已有项目的改动和迁移所做的努力将会是当初学习新和试错的N倍。

言归正传,今天来记录一下使用dotNet Core 3.0的WebAPI和MySQL 8.0的使用(本次实践基于已有数据库,没有完成数据库的需要使用Workbench或Navicat搭建数据库)。

  1. 准备工作

准备工作的目的是搭建一个便于我们调试的工程环境。考虑到以后用到微服务的可能,这里并不能用硬编码(Hardcoding)写死启动的地址和端口,以下工作就是为了达到指定端口启动的目的。

  1. 建立工程

    平常一些小项目我都用VS Code来创建工程了,但这次我使用Visual Studio 2019 16.3.5(dotNet Core 3.0需要至少16.3的版本,如果用VS Code需要最新的C#插件)创建工程。

    为了日后上微服务可能,我们并不能写死项目的启动地址和端口;而且得益于dotNet Core自带Kestrel,所以我并不打算使用IIS Express作为调试使用。在"解决方案次源管理器"中右击项目名——"属性"——"调试"——"配置文件"中选择项目名对应项——"启动"选择"项目",""应用程序参数先不填,这个后面会用到。

    ?

  2. 添加启动参数

    要想指定地址和端口启动,我们可以用硬编码;也可以读取Json配置;也可以像我一样,在程序启动时传入参数。下面介绍如何通过重写Program.cs来读取程序的启动参数。

    可以删除CreateHostBuilder方法,并填加如下方法:

    1. public?static?IWebHost?BuildWebHost(string[]?args)??
    2. {??
    3. ????var?config?=?new?ConfigurationBuilder()??
    4. ????.AddCommandLine(args)??
    5. ????.Build();??
    6. ????string?ip?=?config["ip"];??
    7. ????string?port?=?config["port"];??
    8. ????Console.WriteLine($"ip={ip}:port={port}");??
    9. ????return?WebHost.CreateDefaultBuilder(args)??
    10. ????.UseStartup<Startup>()??
    11. ????.UseUrls($"http://{ip}:{port}")??
    12. ????.Build();??
    13. }??

    修改Main方法为:

    1. public?static?void?Main(string[]?args)??
    2. {??
    3. ????BuildWebHost(args).Run();??
    4. }??

    ?

    在项目"属性"页——"调试"选项卡——"应用程序参数"中填写相应参数,例如我这里填写"—ip 127.0.0.1 –port 8000"。

    在调试按钮的下拉选项中选择项目名。

    到此,按F5或Ctrl+F5启动调试,浏览器会跳转到我们指定的地址和端口。

    1. 添加数据库

    官方教程并没有给出添加MySQL的实例,但其过程和SQL Server是一样的。

  3. 准备工作

    添加NuGet包:在"程序包管理器控制台"中键入:

    dotnet?add?package?MySql.Data.EntityFrameworkCore?--version?8.0.18

    我并没有使用Pomelo库,而用的是MySQL官方库,截止到当天是8.0.18。

    创建如下几个目录:

    Data——用来存放数据库上下文等数据文件

    Models——用来存放数据模型

  4. 创建模型

    在Models目录下创建与数据库匹配的数据模型TestModel.cs。如要指定主键,可以用[Key]属性在模型中指定。

    1. using?System;????
    2. using?System.ComponentModel.DataAnnotations;????
    3. namespace?LRMS.Server????
    4. {????
    5. ????public?class?TestModel????
    6. ????{????
    7. ????????[Key]????
    8. ????????public?int?uid?{?get;?set;?}????
    9. ????????public?string?username?{?get;?set;?}????
    10. ????????public?string?password?{?get;?set;?}????
    11. ????}????
    12. }??

    ?

  5. 创建数据库上下文

    在Data目录下创建数据库上下文TestDbContext.cs。在上下文中使用EF Core中的DbSet类型创建对应的与数据表名称(可忽略大小写)相应的实例。

    1. using?Microsoft.EntityFrameworkCore;????
    2. namespace?LRMS.Server????
    3. {????
    4. ????public?class?UserInfoDbContext?:?DbContext????
    5. ????{????
    6. ????????public?UserInfoDbContext(DbContextOptions?options)?:?base(options)?{?}????
    7. ????????public?DbSet<TestModel>?User_Login?{?get;?set;?}????
    8. ????}????
    9. }????
  6. 添加数据库连接字

    打开在工程的根目录下的appsettings.json。替换以下对象:

    1. {??
    2. ????"ConnectionStrings":?{??
    3. ????????"连接字名称":?"Server=数据库地址;uid=数据库账户;pwd=数据库密码;database=数据库Schema;charset=utf8;SslMode=None;",??
    4. ????},??
    5. ????"Logging":?{??
    6. ????????"LogLevel":?{??
    7. ????????????"Default":?"Information",??
    8. ????????????"Microsoft":?"Warning",??
    9. ????????????"Microsoft.Hosting.Lifetime":?"Information"??
    10. ????????}??
    11. ????},??
    12. ????"AllowedHosts":?"*"??
    13. }??

    ?

    打开Startup.cs,在CoinfigureServices方法中添加如下代码:

    1. public?void?ConfigureServices(IServiceCollection?services)??
    2. {??
    3. ????services.AddControllers();??
    4. ????services.AddDbContext<UserInfoDbContext>(options?=>??
    5. ????{??
    6. ????????options.UseMySQL(Configuration.GetConnectionString("连接字名称"));??
    7. ????});??
    8. }??

    到此,数据库的使用部分结束了。

    1. 后续

    为了安全,防止泄漏,在控制器中我们并不能直接使用数据库上下文,下面的代码展示了一种简单的处理。

    1. //?创建私有、只读的数据库上下文实例??
    2. private?readonly?UserInfoDbContext?_db;??
    3. //?构造函数中为其赋值??
    4. public?UserLoginController(UserInfoDbContext?db)??
    5. {??
    6. ????_db?=?db;??
    7. }??

    ?

    以上。

.Net Core 3.0 WebAPI && MySQL 8.0搭建详情

原文地址:https://www.cnblogs.com/mcf52259/p/11707240.html

时间: 2024-10-05 01:36:16

.Net Core 3.0 WebAPI && MySQL 8.0搭建详情的相关文章

基于 ASP.NET Core 2.0 WebAPI 后台框架搭建(0) - 目录概述

概述 博主自毕业后,进公司就一直是以ASP.NET MVC 5.0 + MySQL 进行项目开发,在项目也使用了很多常用功能,如 WCF.SignalR.微信公众号API.支付宝API.Dapper等等,前端是大杂烩,如:Bootstrap.AmazeUI.EasyUI.Light7.WeUI等等.其实对于我们公司的项目来说,技术栈虽说不庞大,但五脏俱全,而且基于这一套技术,开发速度有保证.但是,作为一个有梦想的程序猿,必须与时俱进,因此无意中接触了.Net Core 2.0.听说它是开源的?它

基于 ASP.NET Core 2.0 WebAPI 后台框架搭建(1) - 依赖注入三层框架搭建

概述 本文章描述如何搭建 ASP.NET Core 2.0 WebAPI 依赖注入三层架构,为什么要加入依赖,并不是为了提供程序性能,而是为了项目间解耦,项目之间能够更加独立. 微软爸爸官方说明文档:在 ASP.NET Core 依赖注入 全面理解 ASP.NET Core 依赖注入 步骤 1. 新建解决方案,添加一个ASP.NET Core WebApi应用 2. 添加四个.Net Core类库:Entity.BLL.DAL.Common 3. 按照以下截图进行解决方案布局 4. 添加DAL层

基于 ASP.NET Core 2.0 WebAPI 后台框架搭建(4) - EF Core CodeFirst 数据库创建

概述 在 基于 ASP.NET Core 2.0 WebAPI 后台框架搭建(2) - EF Core (MySQL) CodeFirst 数据库迁移与依赖注入 一文中,我们介绍如何快速以CodeFirst快速搭建数据库,这一章,我们来完善一下创建数据库中可以添加的验证与约束. 微软爸爸官方文档:Entity Framework Core 数据库操作 (1) 数据库迁移  add-migration [任一名称,须唯一] (2) 更新数据库  update-database (3) 删除数据库迁

ASP.NET Core 3.0 WebApi中使用Swagger生成API文档简介

参考地址,官网:https://docs.microsoft.com/zh-cn/aspnet/core/tutorials/getting-started-with-swashbuckle?view=aspnetcore-2.2&tabs=visual-studio 与https://www.jianshu.com/p/349e130e40d5 当一个WebApi完成之后,书写API文档是一件非常头疼的事,因为不仅要写得清楚,能让调用接口的人看懂,又是非常耗时耗力的一件事.在之前的一篇随笔中(

Asp.net Core 2.0连接mysql数据库一系列错误问题

mysql:最新版 一定是最新版,不然各种报错 Install-Package Pomelo.EntityFrameworkCore.MySql 2.0.0-rtm-10057 02 03 第四部 最后

Asp.Net Core 3.0 WebApi 使用Swagger

1.安装指定版本: Swashbuckle.AspNetCore 5.0.0-rc4(目前稳定版本4.0.1在AspNetCore3.0中会报错误) 2.后台C#代码要严格格式必须加[HttpPost]或者[HttpGet] 3.Startup类中配置如下代码 public void ConfigureServices(IServiceCollection services) { services.AddControllers(); services.AddRazorPages(); #regi

PHP 5.5.38 + mysql 5.0.11 + zabbix3.0 + nginx 安装

PHP 5.5.38 + mysql 5.0.11 + zabbix3.0 + nginx 1.首先在安装好环境下安装 zabbix3.0情况下 2. yum install mysql-devel net-snmp-devel curl curl-devel -y groupadd zabbixuseradd -g zabbix zabbix 3. wget -c http://ncu.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20De

IdentityServer4 ASP.NET Core的OpenID Connect OAuth 2.0框架学习保护API

IdentityServer4 ASP.NET Core的OpenID Connect OAuth 2.0框架学习之保护API. 使用IdentityServer4 来实现使用客户端凭据保护ASP.NET Core Web API 访问. IdentityServer4 GitHub: https://github.com/IdentityServer/IdentityServer4 IdentityServer 框架支持以下功能: 身份验证服务所有应用程序(Web,本机,移动,服务)的集中登录

MySQL 8.0.11 innodb cluster 运维管理手册之二--集群搭建

MySQL 8.0.11 innodb cluster 高可用集群部署运维管理手册之二 集群建设 作者 方连超 基础环境 系统:centos 7.5Mysql:8.0.11 二进制包Mysqlshell: 8.0.11 rpm 包Mysql router: 8.0.11 二进制包 架构: 192.168.181.101 myrouter1 Keepalived.MySQL-shell.MySQL-Router.MySQL-client 192.168.181.102 myrouter2 Keep