新建表Todo,如图
添加模型类
在“解决方案资源管理器”中,右键单击项目。 选择“添加” > “新建文件夹”。 将文件夹命名为 Models。
右键单击 Models 文件夹,然后选择“添加” > “类” 。 将类命名为 Todo,然后选择“添加”。
using System;
namespace Course001.Models
{
public class Todo
{
public Guid Id { get; set; }
public string Name { get; set; }
}
}
右键单击 Models 文件夹,然后选择“添加” > “类” 。 将类命名为 TodoContext,然后单击“添加”。
using Microsoft.EntityFrameworkCore;
namespace Course001.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<TodoContext>(opt =>opt.UseSqlServer(Configuration.GetConnectionString("TodoContext"))); services.AddControllers(); }在appsettings.json文件中增加ConnectionStrings,代码如下:
"ConnectionStrings": { "TodoContext": "server=.\\SQLEXPRESS;database=Course;uid=sa;pwd=123456;Pooling='true';Min Pool Size=3;" }, 修改TodosController.cs文件实现增删改查 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 Course001.Models; namespace Course001.Controllers { [Route("api/[controller]")] [ApiController] public class TodosController : ControllerBase { private readonly TodoContext context; public TodosController(TodoContext context) { this.context = context; } /// <summary> /// 获取所有待办事项 /// </summary> /// <returns></returns> [HttpGet] public async Task<ActionResult<IEnumerable<Todo>>> GetTodos() { return await context.Todo.ToListAsync(); } /// <summary> /// 按ID获取项 /// </summary> /// <param></param> /// <returns></returns> [HttpGet("{id}")] public async Task<ActionResult<Todo>> GetTodo(Guid id) { var todo = await context.Todo.FindAsync(id); if (todo == null) { return NotFound(); } return todo; } /// <summary> /// 添加新项 /// </summary> /// <param></param> /// <returns></returns> [HttpPost] public async Task<ActionResult<Todo>> PostTodo(Todo todo) { todo.Id = Guid.NewGuid(); context.Todo.Add(todo); await context.SaveChangesAsync(); return CreatedAtAction("GetTodo", new { id = todo.Id }, todo); } /// <summary> /// 更新现有项 /// </summary> /// <param></param> /// <param></param> /// <returns></returns> [HttpPut("{id}")] public async Task<ActionResult<Todo>> 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; } /// <summary> /// 删除项 /// </summary> /// <param></param> /// <returns></returns> [HttpDelete("{id}")] public async Task<ActionResult<Todo>> 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。
小结到此我们的 ASP.NET Core API项目,已经实现“待办事项”的增删改查。但这些仅仅作为Demo参考,接下来我们会深入介绍一下我们在ASP.NET Core应用到的这些技术。