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

接收参数注解

相关推荐
加号37 小时前
【C#】 文件与目录管理:创建、删除操作的技术解析
开发语言·c#
千寻girling11 小时前
记录第一次学习 Docker
学习·docker·容器
用户3952409988011 小时前
SqlSugar 连接 PostgreSQL 报错 42P01: relation does not exist 的排查与修复
c#
Kobebryant-Manba12 小时前
学习RNN(简洁实现)
人工智能·rnn·学习
2601_9618752412 小时前
法考考试时间安排及科目|时间表|资料已整理
开发语言·c#·inverted-index·suffix-tree·sstable·r-tree·lsm-tree
ServBay12 小时前
你跟高级 C# 工程师的区别,就是这8个开发技巧
后端·c#·.net
知南x12 小时前
【DPDK例程学习】(4) l2fwd
学习·word
努力努力再努力FFF12 小时前
大学四年AI能力规划:从入门学习到简历表达
人工智能·学习
Litluecat13 小时前
配合多角色提示语3,学习AI漫剧(刚开始学)
人工智能·学习·ai·提示词·短剧·漫剧
三品吉他手会点灯13 小时前
STM32F103 学习笔记-24-I2C-读写EEPROM(第1节)-I2C物理层介绍
笔记·stm32·学习