.NETCore----API连接数据库,实现增删改查操作

一、新建项目

1.新建一个.NET Core项目 CoreApi,选择API模板,创建包含RESTful HTTP服务示例控制器的ASP.NET Core应用程序。
.NETCore----API连接数据库,实现增删改查操作_第1张图片
.NETCore----API连接数据库,实现增删改查操作_第2张图片

二、管理NuGet程序包

  • Microsoft.EntityFrameworkCore --实体框架数据访问计数的轻量级和可扩展版本
  • Microsoft.EntityFrameworkCore.SqlServer --用于实体框架核心的sqlServer数据库提供程序

三、建立数据库文件

  • 数据库名:TodoItemDemo
  • 数据表名:TodoItem
    .NETCore----API连接数据库,实现增删改查操作_第3张图片
    附:C# 数据类型 映射到SQL Server的数据类型.NETCore----API连接数据库,实现增删改查操作_第4张图片

三、新建实体类和上下文操作类

实体类:

 public class TodoItem
    {
     
        public int  Id {
      get; set; }
        public string  Name {
      get; set; }
        public bool IsTure {
      get; set; }
    }

上下文类:

using Microsoft.EntityFrameworkCore;

namespace CoreApi.Models
{
     
    public class TodoItemContext:DbContext
    {
     
        public TodoItemContext(DbContextOptions<TodoItemContext> options)
        {
     

        }
        public DbSet<TodoItem> TodoItems {
      get; set; }
    }
}

四、配置数据库连接字符串

在appsettings.json中,添加如下代码:

{
     
  "Logging": {
     
    "LogLevel": {
     
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  "ConnectionStrings": {
     
    "DefaultConnection": "Server=.;Database=TodoItemDemo;Trusted_Connection=True;MultipleActiveResultSets=true"
  },
  "AllowedHosts": "*"
}

五、修改启动文件

Startup.cs文件为项目启动文件

using Microsoft.EntityFrameworkCore;
using CoreApi.Models;
W  public void ConfigureServices(IServiceCollection services)
        {
     
            services.AddDbContext<TodoItemContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
            services.AddMvc();
        }

六、新建API控制器

*一定要选择“”其操作使用Entity Framework的 API控制器.NETCore----API连接数据库,实现增删改查操作_第5张图片
使用postman工具测试API请求
postman工具

  1. 初次判断,当前数据库有无数据,如果没有则插入数据
  2. 查询数据
  3. 增加数据
  4. 修改数据
  5. 根据ID查询数据
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using CoreApi.Models;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;

namespace CoreApi.Controllers
{
     
    [Route("api/[controller]")]
    [ApiController]
    public class TodoItemController : Controller
    {
     

        private readonly TodoItemContext _context;
        /// 
        /// 初次判断
        /// 
        /// 
        public TodoItemController(TodoItemContext context)
        {
     
            _context = context;
            if (_context.TodoItem.Count() == 0)
            {
     
                _context.TodoItem.Add(new TodoItem {
      Id = 1, Name = "qi" });
                _context.SaveChanges();
            }
        }
        /// 
        /// 异步获取
        /// 
        /// 
        [HttpGet]

        public async Task<ActionResult<IEnumerable<TodoItem>>> GetTodoItem()
        {
     
            //ToListAsync在命名空间 using Microsoft.EntityFrameworkCore;
            return await _context.TodoItem.ToListAsync();
        }
        /// 
        /// 查询
        /// 
        /// 
        /// 
        [HttpGet("{id}")]
        public async Task<ActionResult<TodoItem>> GetTodoItem(int  id)
        {
     
            var todoItem = await _context.TodoItem.FindAsync(id);
            if (todoItem == null)
            {
     
                return NotFound();
            }
            return todoItem;
        }
        /// 
        /// 添加
        /// 
        /// 
        /// 
        [HttpPost]
        public async Task<ActionResult<TodoItem>> PostToItem(TodoItem item)
        {
     
            _context.TodoItem.Add(item);
            await _context.SaveChangesAsync();
            return CreatedAtAction(nameof(GetTodoItem), new {
      id = item.Id }, item);
        }

        /// 
        /// 修改
        /// 
        /// 
        /// 
        /// 
        [HttpPut("{id}")]
        public async Task<IActionResult> PutTodoItem(int  id, TodoItem item)
        {
     
            if (id != item.Id)
            {
     
                return BadRequest();
            }
            _context.Entry(item).State = EntityState.Modified;
            await _context.SaveChangesAsync();
            return NoContent();
        }
        /// 
        /// 删除
        /// 
        /// 
        /// 
        [HttpDelete("{id}")]
        public async Task<IActionResult> DeleteTodoItem(int  id)
        {
     
            var todoItem = await _context.TodoItem.FindAsync(id);
            if (todoItem == null)
            {
     
                return NotFound();
            }
            _context.TodoItem.Remove(todoItem);
            await _context.SaveChangesAsync();
            return NoContent();
        }
    }
}

你可能感兴趣的:(.NET)