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"
    }
  }
}

接收参数注解

相关推荐
约克34 分钟前
商水约克中央空调商用工程的行业洞察与落地要点
学习
俊昭喜喜里22 分钟前
C#中的func<>
java·前端·c#
highreport27 分钟前
net报表工具对比:HighReport 与 FastReport
java·c#
王的宝库1 小时前
Linux 性能优化入门
linux·学习
reasonsummer1 小时前
【办公类-146-05】20260901《一分园、二分园四大教育》(优化版:标题excle+复制AI文字+Python占位符录入)
开发语言·数据库·c#
CSDN_RTKLIB1 小时前
C#可选参数时重载
c#
公爵爱学习1 小时前
无人机定点飞行-介绍
开发语言·图像处理·python·学习·线性回归·无人机
浔溺1 小时前
al+大数据每日学习笔记33
大数据·笔记·学习
lifallen2 小时前
Agent 框架不是 API 包装器,而是一个微型操作系统内核
人工智能·学习·ai·ai编程
古少侠2 小时前
用 DS随心转 把 AI 画的 Mermaid 流程图转成 Word 里的高清图
开发语言·c#·word