C# webApi学习笔记

创建实体类,这里会自动生成构造函数,但是不会生成tostring

cs 复制代码
namespace WebApplication1.Products
{
    public class Product
    {
        public string productId { get; set; }
        public string productName { get; set; }
        public override string ToString()
        {
            return $"{nameof(productId)}: {productId}, {nameof(productName)}: {productName}";
        }
    }

}

创建连接数据库类

cs 复制代码
using Microsoft.EntityFrameworkCore;
using WebApplication1.Products;

namespace WebApplication1.Data
{
    public class AppDbContext : DbContext
    {
        // 构造函数,用于接收配置
        public AppDbContext(DbContextOptions<AppDbContext> options) : base(options)
        {
        }
        // DbSet 代表数据库中的一张表,后续的CRUD操作都基于它
        public DbSet<Product> Todos { get; set; }
    }
}

webApi 控制层,

复制代码
入口文件main方法中向依赖注入容器注册 AppDbContext
cs 复制代码
builder.Services.AddDbContext<AppDbContext>(options =>
    options.UseMySql(
        builder.Configuration.GetConnectionString("DefaultConnection"),
        new MySqlServerVersion(new Version(8, 0, 33))  // 根据你的 MySQL 版本调整
    ));

ToList();执行sql并存储到List

cs 复制代码
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using WebApplication1.Data;
using WebApplication1.Products;

namespace WebApplication1.TodosController
{
    [Route("api/")]
    [ApiController]
    public class ValuesController : ControllerBase
    {
        private readonly AppDbContext appdbs;
        // 构造函数,自动注入SQL连接的基本数据
        public ValuesController(AppDbContext appdb)
        {
            this.appdbs = appdb;
        }
        [Route("getProduct")]
        [HttpGet]
        public  List<Product> GetProduct([FromQuery]Product product)
        {
            Console.WriteLine(product);
            var todos =  appdbs.Todos.FromSqlRaw("select productId,productName From product where productId ={0}", "PRO258Q00004").ToList();
            return todos;
        }
    }
}

CRUD

cs 复制代码
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using System.Reflection.Metadata.Ecma335;
using WebApplication1.Data;
using WebApplication1.Products;

namespace WebApplication1.TodosController
{
    [Route("api/")]
    [ApiController]
    public class ValuesController : ControllerBase
    {
        private readonly AppDbContext appdbs;
        // 构造函数,自动注入SQL连接的基本数据
        public ValuesController(AppDbContext appdb)
        {
            this.appdbs = appdb;
        }
        [Route("getProduct")]
        [HttpGet]
        public async Task<List<Product>> GetProduct([FromQuery]Product product)
        {
            var todos = await appdbs.Todos.FromSqlRaw("select productId,productName From product").ToListAsync();
            return todos;
        }
        [Route("add")]
        [HttpPost]
        public  IActionResult Insert([FromBody] Product product)
        {
            int todos =  appdbs.Database.ExecuteSqlRaw("insert into product(productName)values({0})", product.productName);
            return StatusCode(200,"插入成功");
        }
        [Route("update")]
        [HttpPut]
        public IActionResult Update([FromBody] Product product)
        {
            int rowsAffected = appdbs.Database.ExecuteSqlRaw(
                "UPDATE product SET productName = {0} WHERE productId = {1}",
                product.productName, product.productId
            );
            if (rowsAffected > 0) {
               return StatusCode(200,"修改成功");
            }
            return StatusCode(500,"修改失败") ;
        }

        [Route("delete")]
        [HttpDelete]
        public IActionResult Delete([FromQuery] string productId)
        {
            int rowsAffected = appdbs.Database.ExecuteSqlRaw(
                "DELETE FROM product WHERE productId = {0}",
                productId
            );
            return StatusCode(200,"删除成功");
        }
    }
}

所需要的依赖包,以及安装依赖

修改默认端口

cs 复制代码
"Kestrel": {
  "Endpoints": {
    "Https": {
      "Url": "https://*:9601"
    },
    "Http": {
      "Url": "http://*:9600"
    }
  }
}

接收参数注解

相关推荐
David猪大卫11 分钟前
【C++修炼】string类:string类的模拟实现
c语言·开发语言·数据结构·c++·经验分享·笔记·学习
lisw0541 分钟前
计算生物学学习笔记:NHGRI基因组数据科学分析、可视化和信息学实验室空间(AnVIL)
笔记·计算生物学
lisw051 小时前
“科学前沿极限突破计划”述评!
大数据·人工智能·学习
外收内放1 小时前
数据分析(数据清洗)
python·学习·数据分析
一条泥憨鱼1 小时前
【计算机网络】| 详解链路层:MAC 地址与VLAN
网络·学习·计算机网络
燕落南枝2 小时前
C 语言学习大总结:从入门到进阶的完整知识体系
服务器·c语言·学习
科技林总2 小时前
从零开始学习DeerFlow完整路径
学习
骑士雄师2 小时前
结构化思维》第一、二章 → prompt review skill 优化启发清单
笔记