Asp.NET Core基础 第二篇 Core WebAPI连接Sqlserver数据库及服务发布

 

 

第二篇  Asp.Net Core WebAPI 连接Sqlserver数据库及WebAPI服务发布

 

      前言  Core API可以在业务与数据的模式下提供了一项安全、可靠的数据接口服务方式,我们借助于Core API可以为移动端、物联网终端、互联网终端等设备提供在线数据访问服务,本文重点介绍Core API项目创建、Sqlserver数据CRUD操作、服务发布(WinDows服务器和Linux服务器),侧重入门实操,大侠绕步!

      学习目标

       1)使用Vs2019创建Core API项目;

       2)如何实现Core API连接Sqlserver数据库,并且实现CRUD操作;

       3)搭建Swagger,实现可视化的API页面。

       4)在Windows和Linux服务器发布Core API应用。

      前期准备工具:

      Vs2019 IDE环境、Sqlserver2008、Windows服务器、Linux服务器。

 

       一、使用Vs2019创建WebAPI项目

  新建一个项目名称为WebApi的工程,Core版本选择3.1,项目类型选择“ASP.NET Core Web API”,如下图所示

 

 


 

 

 

 

 

 

   使用项目模板自动生成了一个未来5天天气情况的Json字符串,运行后如下图所示:

[{
    "date": "2021-11-25T15:15:48.3451682+08:00",
    "temperatureC": 3,
    "temperatureF": 37,
    "summary": "Scorching"
}, {
    "date": "2021-11-26T15:15:48.3481578+08:00",
    "temperatureC": 17,
    "temperatureF": 62,
    "summary": "Scorching"
}, {
    "date": "2021-11-27T15:15:48.3481611+08:00",
    "temperatureC": -9,
    "temperatureF": 16,
    "summary": "Bracing"
}, {
    "date": "2021-11-28T15:15:48.3481614+08:00",
    "temperatureC": 49,
    "temperatureF": 120,
    "summary": "Hot"
}, {
    "date": "2021-11-29T15:15:48.3481615+08:00",
    "temperatureC": 35,
    "temperatureF": 94,
    "summary": "Warm"
}]

  项目中的文件和文件夹主要有:Controllers(控制器),appsettings.json(配置数据库等连接参数),Program.cs(软件启动项设置),Startup.cs(注册路由和服务)

       二、建立SqlServer数据库CRUD操作

         2.1 配置Sqlserver参数,导入Core Nuget程序包

        Core Web API和MVC配置类似,需要先导入NuGet包,appsettings.json文件中配置Sql数据库连接参数,Startup.cs中配置连接服务。

  三个NuGet包分别为:Microsoft.EntityFrameworkCore(5.0.12)、Microsoft.EntityFrameworkCore.SqlServer、Microsoft.EntityFrameworkCore.Tools、Microsoft.VisualStudio.Web.CodeGenerators.Design

 

  右键点击项目资源,选择“管理NuGet程序包”

  

 

 

   在appsetting.json文件中设置数据库连接字符串

 1 {
 2   "Logging": {
 3     "LogLevel": {
 4       "Default": "Information",
 5       "Microsoft": "Warning",
 6       "Microsoft.Hosting.Lifetime": "Information"
 7     }
 8   },
 9   "AllowedHosts": "*",
10   "ConnectionStrings": {
11     "MVCSqlContext": "Server=localhost;Database=InfoUser;User ID=sa;Password=sa;"
12   }
13 }

  在Startup.cs文件中配置连接服务,如下图所示

 1         // This method gets called by the runtime. Use this method to add services to the container.
 2         public void ConfigureServices(IServiceCollection services)
 3         {
 4             services.AddControllersWithViews();
 5             //下面为加入的数据库服务,注意MVCSqlContext修改为自己的文件名
 6             services.AddDbContext<InfoUserContext>(options =>
 7                     options.UseSqlServer(Configuration.GetConnectionString("MVCSqlContext")));
 8 
 9 
10 
11             services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_3_0);
12         }

  

  2.2 添加Model模型类、用于CRUDSqlserver数据业务的控制器

        首先,在Sqlserver数据库创建数据库名为InfoUser的数据库,建立一个UserData表,表结构如下:

 

 

 

  在项目中添加一个“Models”文件夹,右键点击Models添加类文件,类的名称为UserData

 

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Web;
 5 using System.ComponentModel.DataAnnotations;
 6 using System.ComponentModel.DataAnnotations.Schema;
 7 
 8 namespace MVC_SQL_Test.Models
 9 {
10     public partial class UserData
11     {
12         [Key, Column(Order = 1)]
13         public int UserId { get; set; }
14         public string UserName { get; set; }
15         public string Password { get; set; }
16     }
17 }

 

  手动添加一个API 控制器,右键点击Models,依次选择“添加”->"控制器"->“EF 控制器”

 

 

 

  

 

  控制器自动生成后,点击项目调试运行:https://localhost:44364/api/UserDatas/5,运行结果如下:

 

 

 

      注意:在API项目中也可以同时创建MVC 控制器和Views页面,可参考第一篇。

 

       三、创建Swagger可视化(RESTFull)服务

         第一步:需要导入Swagger NuGet包,右键选中项目依次点击“NuGet包管理器”->输入“Swashbuckle.AspNetCore”

 

 

 

   第二步:在Startup.cs文件中注册Swagger服务,代码如下图所示:

 

 1 using Microsoft.AspNetCore.Builder;
 2 using Microsoft.AspNetCore.Hosting;
 3 using Microsoft.AspNetCore.HttpsPolicy;
 4 using Microsoft.AspNetCore.Mvc;
 5 using Microsoft.Extensions.Configuration;
 6 using Microsoft.Extensions.DependencyInjection;
 7 using Microsoft.Extensions.Hosting;
 8 using Microsoft.Extensions.Logging;
 9 using Microsoft.OpenApi.Models;
10 using System;
11 using System.Collections.Generic;
12 using System.Linq;
13 using System.Threading.Tasks;
14 using Microsoft.EntityFrameworkCore;
15 using WebApi.Data;
16 
17 namespace WebApi
18 {
19     public class Startup
20     {
21         public Startup(IConfiguration configuration)
22         {
23             Configuration = configuration;
24         }
25 
26         public IConfiguration Configuration { get; }
27 
28         // This method gets called by the runtime. Use this method to add services to the container.
29         public void ConfigureServices(IServiceCollection services)
30         {
31 
32             services.AddControllers();
33             services.AddSwaggerGen(c =>
34             {
35                 c.SwaggerDoc("v1", new OpenApiInfo { Title = "WebApi", Version = "v1" });
36             });
37 
38             services.AddDbContext<WebApiContext>(options =>
39                     options.UseSqlServer(Configuration.GetConnectionString("WebApiContext")));
40         }
41 
42         // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
43         public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
44         {
45             if (env.IsDevelopment())
46             {
47                 app.UseDeveloperExceptionPage();
48                 app.UseSwagger();
49                 app.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/v1/swagger.json", "WebApi v1"));
50             }
51 
52             app.UseHttpsRedirection();
53 
54             app.UseRouting();
55 
56             app.UseAuthorization();
57 
58             app.UseEndpoints(endpoints =>
59             {
60                 endpoints.MapControllers();
61             });
62         }
63     }
64 }

 

 

      最终运行效果如下图所示:

 

 

 

 

 

 

           

 

posted @ 2021-11-25 21:40  高山流水学编程  阅读(6238)  评论(0编辑  收藏  举报