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

接收参数注解

相关推荐
魔法阵维护师6 小时前
从零开发游戏需要学习的c#模块,第二十四章(瓦片地图 —— 让世界有墙)
学习·游戏·c#
吴可可1236 小时前
C#中括号报错“应输入标识符”原因解析
c#
文阿花6 小时前
Pc端大屏地图实现方案分析
学习
摇滚侠6 小时前
Java 零基础全套教程,File 类与 IO 流,笔记 175-176
java·开发语言·笔记
Leventure_轩先生7 小时前
[工程笔记]OpenGL 数字字体渲染异常考
笔记
我的xiaodoujiao7 小时前
API 接口自动化测试详细图文教程学习系列21--结合Pytest框架使用2--断言和插件
python·学习·测试工具·pytest
炽烈小老头7 小时前
【每天学习一点算法 2026/05/22】课程表 II
学习·算法
05候补工程师7 小时前
【线性代数·全体系复习】核心考点与解题方法论总结(考研/期末冲刺硬核干货)
笔记·线性代数·考研·矩阵
wuxinyan1237 小时前
工业级大模型学习之路026:LangGraph 入门与基础 Agent 开发
人工智能·python·学习·langsmith