增删改查_手把手教你AspNetCore WebApi:增删改查

前言

小明已经创建与运行了WebApi项目,了解项目结构有哪些组成,并学会了怎么发布到IIS。基础已经建好,从现在开始要真正实现待办事项的功能了。

新建表

CREATE TABLE [dbo].[Todo]([Id] [uniqueidentifier] NOT NULL,[Name] [nvarchar](100) NULL, CONSTRAINT [PK_Todo] PRIMARY KEY CLUSTERED ([Id] ASC)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]) ON [PRIMARY]GO
3b1181d1a3ea84fa8b22ae77b08a4f20.png

添加模型类

  • 在“解决方案资源管理器”中,右键单击项目。 选择“添加” > “新建文件夹”。 将文件夹命名为 Models。
  • 右键单击 Models 文件夹,然后选择“添加” > “类” 。 将类命名为 Todo,然后选择“添加”。
using System;namespace App001.Models{    public class Todo    {        public Guid Id { get; set; }        public string Name { get; set; }    }}

添加数据库上下文

  • 右键单击 Models 文件夹,然后选择“添加” > “类” 。 将类命名为 TodoContext,然后单击“添加”。
using Microsoft.EntityFrameworkCore;namespace App001.Models{    public class TodoContext : DbContext    {        public TodoContext(DbContextOptions options)            : base(options)        {        }        public DbSet Todos { get; set; }    }}

注册数据库上下文

在 ASP.NET Core 中,服务(如数据库上下文)必须向依赖关系注入 (DI) 容器进行注册。 该容器向控制器提供服务。

在Startup.cs文件中增加services.AddDbContext,代码如下:

public void ConfigureServices(IServiceCollection services){    services.AddDbContext(opt =>opt.UseSqlServer(Configuration.GetConnectionString("TodoContext")));    services.AddControllers();}

在appsettings.json文件中增加ConnectionStrings,代码如下:

"ConnectionStrings": {    "TodoContext": "server=.SQLEXPRESS;database=App001;uid=sa;pwd=123456;Pooling='true';Min Pool Size=3;"},

构建控制器,实现增删改查

  • 右键单击 Controllers 文件夹。
  • 选择“添加”>“新建构建项” 。
  • 选择“其操作使用实体框架的 API 控制器”,然后选择“添加” 。
  • 在“添加其操作使用实体框架的 API 控制器”对话框中:
  • 在“模型类”中选择“Todo (App001.Models)” 。
  • 在“数据上下文类”中选择“TodoContext (App001.Models)” 。
  • 选择“添加”。
using System;using System.Collections.Generic;using System.Linq;using System.Threading.Tasks;using Microsoft.AspNetCore.Http;using Microsoft.AspNetCore.Mvc;using Microsoft.EntityFrameworkCore;using App001.Models;namespace App001.Controllers{    [Route("api/[controller]")]    [ApiController]    public class TodosController : ControllerBase    {        private readonly TodoContext context;        public TodosController(TodoContext context)        {            this.context = context;        }        ///         /// 获取所有待办事项        ///         ///         [HttpGet]        public async Task>> GetTodos()        {            return await context.Todo.ToListAsync();        }        ///         /// 按ID获取项        ///         ///         ///         [HttpGet("{id}")]        public async Task> GetTodo(Guid id)        {            var todo = await context.Todo.FindAsync(id);            if (todo == null)            {                return NotFound();            }            return todo;        }        ///         /// 添加新项        ///         ///         ///         [HttpPost]        public async Task> PostTodo(Todo todo)        {            todo.Id = Guid.NewGuid();            context.Todo.Add(todo);            await context.SaveChangesAsync();            return CreatedAtAction("GetTodo", new { id = todo.Id }, todo);        }        ///         /// 更新现有项        ///         ///         ///         ///         [HttpPut("{id}")]        public async Task> PutTodo(Guid id, Todo todo)        {            var oldTodo = await context.Todo.FindAsync(id);            oldTodo.Name = todo.Name;            context.Entry(oldTodo).State = EntityState.Modified;            await context.SaveChangesAsync();            return oldTodo;        }        ///         /// 删除项        ///         ///         ///         [HttpDelete("{id}")]        public async Task> DeleteTodo(Guid id)        {            var todo = await context.Todo.FindAsync(id);            if (todo == null)            {                return NotFound();            }            context.Todo.Remove(todo);            await context.SaveChangesAsync();            return todo;        }    }}

通过 Postman 测试 添加新项

  • 创建新请求。
  • 将 HTTP 方法设置为“POST”。
  • 将请求 URI 设置为 https://localhost:44342/api/todos。
  • 选择“正文”选项卡。
  • 选择“原始”单选按钮。
  • 将类型设置为 JSON (application/json)
  • 在请求正文中,输入待办事项的 JSON:
{    "Name":"遛狗"}
  • 选择Send。
6337c641693439f7089118ec3390a992.png

小结

目前为止,小明已经实现“待办事项”的增删改查,心里洋洋得意,摸了摸光滑的脑袋,小明美滋滋找小红去对接了。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值