










新建ASP.NET Core Web API 项目,引用SqlSugarCore包,
新建库UserDB,然后新建表,
CREATE TABLE `user` ( `UserID` int NOT NULL AUTO_INCREMENT, `UserName` varchar(255) NOT NULL, `Age` tinyint unsigned NOT NULL, `Gender` tinyint unsigned NOT NULL, PRIMARY KEY (`UserID`) ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
Program
using SqlSugar; namespace WebApplication1 { public class Program { public static void Main(string[] args) { var builder = WebApplication.CreateBuilder(args); // Add services to the container. builder.Services.AddControllers(); // Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle builder.Services.AddEndpointsApiExplorer(); builder.Services.AddSwaggerGen(); //这个对象应该创建一次就行了吧 var connectionConfig = new ConnectionConfig() { DbType = DbType.MySql, ConnectionString = builder.Configuration.GetConnectionString("DefaultConnection"), IsAutoCloseConnection = true }; builder.Services.AddScoped<ISqlSugarClient>(s => new SqlSugarClient(connectionConfig)); var app = builder.Build(); if (app.Environment.IsDevelopment()) { app.UseSwagger(); app.UseSwaggerUI(); } app.UseHttpsRedirection(); app.UseAuthorization(); app.MapControllers(); app.Run(); } } }
配置文件
{ "Logging": { "LogLevel": { "Default": "Information", "Microsoft.AspNetCore": "Warning" } }, "AllowedHosts": "*", "ConnectionStrings": { "DefaultConnection": "Server=localhost;Database=UserDB;Uid=root;Pwd=123456;" } }
实体类
using SqlSugar; namespace WebApplication1.Enitiy { public class User { [SugarColumn(IsPrimaryKey = true, IsIdentity = true)] public int UserID { get; set; } public string UserName { get; set; } public byte Age { get; set; } public byte Gender { get; set; } } }
控制器
using Microsoft.AspNetCore.Mvc; using SqlSugar; using WebApplication1.Enitiy; namespace WebApplication1.Controllers { [ApiController] [Route("api/[controller]/[Action]")] public class UserController(ISqlSugarClient ssc) : ControllerBase { [HttpPost] public async Task<int> Add([FromForm] User user) { return await ssc.Insertable(user).ExecuteCommandAsync(); } //api/User/Delete/1 [HttpPost("{userID}")] public async Task<int> Delete(int userID) { return await ssc.Deleteable<User>().Where(s => s.UserID == userID).ExecuteCommandAsync(); } [HttpPost] public async Task<int> Update(User user) { //默认解析消息体中的json数据 return await ssc.Updateable(user).ExecuteCommandAsync(); } //api/User/Get?userID=2 [HttpGet] public async Task<User> Get(int userID) { var aaa = await ssc.Queryable<User>().FirstAsync(p => p.UserID == userID); return aaa; } [HttpGet("/api/[controller]/all")] //有时候需要手动指定地址 public async Task<IEnumerable<User>> GetAll() { return await ssc.Queryable<User>().ToListAsync(); } [HttpGet] public async Task<IEnumerable<User>> GetListByAge(int age) { return await ssc.Queryable<User>().Where(p => p.Age == age).ToListAsync(); } [HttpPost] public async Task<IEnumerable<User>> GetListByUserName(string userName) { //默认为query return await ssc.Queryable<User>().Where(p => p.UserName == userName).ToListAsync(); } [HttpPost("/api/user/search")] public async Task<IEnumerable<User>> GetListLikeUserName([FromForm] string userName) { //解析form标单中的数据 return await ssc.Queryable<User>().Where(p => p.UserName.Contains(userName)).ToListAsync(); } } }
注意踩坑:
1,默认新建的项目有个Swagger,如果你顺手升级了Swashbuckle.AspNetCore包,就可能Swagger UI报错异常,此时只需要Ctrl+F5强制刷新清理缓存就正常了
2,即使是POST方式默认参数解析也是去query中找,如果是form表单,需要指定[FromForm],对自定义实体类和基础类型字段都有效
3,手动指定地址时,必须要以/开头才会覆盖默认的路由,比如/api/user/search,否则就是附加,如果配置的是[HttpPost("api/user/search")],最后的地址就会变成https://localhost:7038/api/User/GetListLikeUserName/api/user/search
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。