asp.net core webapi接入SqlSugar操作PostgreSQL:从零到一完整实战

简介: 本文详解 ASP.NET Core WebAPI 项目中,基于 SqlSugarCore 5.1.4.214 快速集成 PostgreSQL(12+)的完整实践:涵盖环境搭建、连接配置、自动建表、异步 CRUD 及分页接口,适配 .NET 6/7/8,Rider 开发,开箱即用。

本文将详细讲解在asp.net core webapi项目中,基于SqlSugarCore ORM框架实现PostgreSQL数据库的连接、配置、CRUD操作,适配.NET 6/.NET 7/.NET 8主流版本,全程无冗余配置,可直接落地项目。

一、环境准备

1.1 开发环境

  • 开发工具:Rider
  • 运行环境:.NET 6+ (推荐.NET 8 LTS)
  • 数据库:PostgreSQL 12+ (本地/服务器部署均可)
  • ORM框架:SqlSugarCore 5.1.4.214(固定稳定版本)

    1.2 数据库准备

提前安装PostgreSQL数据库,创建空数据库(示例数据库名:SqlSugarPgDb),无需手动创建数据表,后续通过SqlSugarCore代码自动建表。同时记录数据库连接所需参数:地址、端口、数据库名、账号、密码。

二、创建asp.net core webapi项目

  1. 打开Rider开发工具,点击首页New Solution新建解决方案项目
  2. 在项目模板中选择asp.net core webapi,自定义项目名称、存储路径,选择对应的.NET框架(如.NET 8)
  3. 取消Configure for HTTPS(HTTPS配置),点击创建,生成纯净的asp.net core webapi空项目

三、安装必要NuGet包

通过Rider内置NuGet包管理器或NuGet控制台,安装以下两个核心包(适配PostgreSQL专属依赖):

  • SqlSugarCore:.NET Core 专属核心ORM框架,提供数据库操作能力
  • Npgsql:PostgreSQL官方ADO.NET驱动,SqlSugarCore操作PG数据库必须依赖

本次项目固定使用SqlSugarCore 5.1.4.214 版本,提供两种Rider安装方式(图形化安装+终端命令安装),可任选其一:

方式一:Rider可视化NuGet包管理器安装(推荐)

1. 在Rider右侧面板找到【NuGet】包管理工具,打开包搜索界面;
2. 在搜索框输入 SqlSugarCore,检索对应组件;
3. 在版本下拉列表中,精准选择 5.1.4.214 固定版本;
4. 点击安装,等待Rider自动完成组件引入与引用配置。

方式二:.NET CLI 终端命令安装

打开Rider底部Terminal终端,切换到项目根目录,执行标准 .NET CLI 命令精准安装指定版本:

dotnet add package SqlSugarCore --version 5.1.4.214

四、配置数据库连接字符串

在项目根目录的appsettings.json中添加PostgreSQL数据库连接配置,替换为自己的数据库参数:

{
   
  "Logging": {
   
    "LogLevel": {
   
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "ConnectionStrings": {
   
    "PgSqlConnection": "Host=localhost;Port=5432;Database=SqlSugarPgDb;Username=postgres;Password=123456;Pooling=true;Maximum Pool Size=100"
  },
  "AllowedHosts": "*"
}

参数说明:Host为数据库地址、Port默认5432、Database为目标库名、Username为数据库账号、Password为登录密码;Pooling开启连接池、Maximum Pool Size设置最大连接数,提升高并发下的性能。

五、注册SqlSugarCore全局服务

Program.cs中配置SqlSugar参数,注册为全局单例服务,适配PostgreSQL数据库,开启日志、自动建表等功能:

using SqlSugar;
using SqlSugarPgDemo.Extensions;

var builder = WebApplication.CreateBuilder(args);

// 注册控制器
builder.Services.AddControllers();
// 注册Swagger文档
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();

// 注册SqlSugarCore服务
builder.Services.AddScoped<ISqlSugarClient>(sp =>
{
   
    var db = new SqlSugarClient(new ConnectionConfig()
    {
   
        // 数据库类型指定为PostgreSQL
        DbType = DbType.PostgreSQL,
        ConnectionString = builder.Configuration.GetConnectionString("PgSqlConnection"),
        // 开启自动释放数据库连接
        IsAutoCloseConnection = true,
        MoreSettings = new ConnMoreSettings()
        {
   
            PgSqlIsAutoToLower = false, // 是否自动转小写
            *PgSqlIsAutoToLowerCodeFirst = false, // CodeFirst时是否转小写
        }
    });

    // 开启SQL日志输出(控制台打印执行的SQL语句,方便调试)
    db.Aop.OnLogExecuting = (sql, pars) =>
    {
   
        Console.WriteLine($"执行SQL:{sql}\r\n参数:{string.Join(",", pars.Select(p => p.Value))}");
    };

    return db;
});

var app = builder.Build();

// 启用Swagger
if (app.Environment.IsDevelopment())
{
   
    app.UseSwagger();
    app.UseSwaggerUI();
}

app.UseAuthorization();
app.MapControllers();

// 初始化数据库表
app.InitTables();

app.Run();

六、创建实体类(数据库表映射)

新建Entity文件夹,创建测试实体类 User.cs,SqlSugarCore可通过该实体自动生成数据库表:

using SqlSugar;

namespace SqlSugarPgDemo.Entity
{
   
    /// <summary>
    /// 用户实体(自动映射user表)
    /// </summary>
    [SugarTable("sys_user")] // 指定数据库表名
    public class User
    {
   
        /// <summary>
        /// 主键ID(自增)
        /// </summary>
        [SugarColumn(IsPrimaryKey = true, IsIdentity = true)] // 主键、自增
        public int Id {
    get; set; }

        /// <summary>
        /// 用户名
        /// </summary>
        [SugarColumn(Length = 50, IsNullable = false)] // 字段长度、非空
        public string UserName {
    get; set; } = string.Empty;

        /// <summary>
        /// 手机号
        /// </summary>
        [SugarColumn(Length = 11, IsNullable = true)]
        public string? Phone {
    get; set; }

        /// <summary>
        /// 创建时间
        /// </summary>
        [SugarColumn(IsNullable = true)]
        public DateTime? CreateTime {
    get; set; }
    }
}

核心特性说明:SugarTable指定表名,SugarColumn配置字段属性(主键、自增、长度、是否为空),完美适配PostgreSQL字段规则。

七、项目启动自动初始化数据库表(扩展类方式)

本文采用项目启动自动建表方案,无需手动调用接口,通过自定义扩展类实现程序启动时自动根据实体类创建数据表,不存在则创建,已存在则忽略,适配PostgreSQL数据库。首先在项目中新建 Extensions 文件夹,创建扩展静态类 Extensions.cs

using SqlSugar;
using SqlSugarPgDemo.Entity;
using Microsoft.AspNetCore.Builder;

namespace SqlSugarPgDemo.Extensions;

public static class Extensions
{
   
    /// <summary>
    /// 项目启动初始化数据库表
    /// </summary>
    /// <param name="app"></param>
    public static void InitTables(this IApplicationBuilder app)
    {
   
        // 创建服务作用域,获取SqlSugarCore实例
        using var scope = app.ApplicationServices.CreateScope();
        var db = scope.ServiceProvider.GetRequiredService<ISqlSugarClient>();

        // 自动根据实体初始化数据表
        db.CodeFirst.InitTables<User>();
    }
}

扩展类编写完成后,已在前文Program.cs中引入调用 app.InitTables();,无需手动调用接口。在Rider中点击右上角运行按钮启动项目,程序启动完成后,会自动在PostgreSQL数据库中生成 sys_user 数据表,全程无需人工干预。

八、实现CRUD核心接口

新建 UserController.cs,实现新增、查询、修改、删除、分页查询等常用数据库操作:

using Microsoft.AspNetCore.Mvc;
using SqlSugar;
using SqlSugarPgDemo.Entity;

namespace SqlSugarPgDemo.Controllers;

[Route("api/**[controller]**")]
[ApiController]
public class UserController : ControllerBase
{
    private readonly ISqlSugarClient _db;

    public UserController(ISqlSugarClient db)
    {
        _db = db;
    }

    /// <summary>
    /// 新增用户
    /// </summary>
    [HttpPost("Add")]
    public async Task<IActionResult> AddUser([FromBody] User user)
    {
        user.CreateTime = DateTime.Now;
        int id = await _db.Insertable(user).ExecuteReturnIdentityAsync();
        return Ok($"新增成功,用户ID:{id}");
    }

    /// <summary>
    /// 根据ID查询用户
    /// </summary>
    [HttpGet("GetById/{id}")]
    public async Task<IActionResult> GetUserById(int id)
    {
        var user = await _db.Queryable<User>().InSingleAsync(id);
        return Ok(user);
    }

    /// <summary>
    /// 查询所有用户
    /// </summary>
    [HttpGet("GetAll")]
    public async Task<IActionResult> GetAllUser()
    {
        var list = await _db.Queryable<User>().ToListAsync();
        return Ok(list);
    }

    /// <summary>
    /// 分页查询用户
    /// </summary>
    [HttpGet("GetPage")]
    public async Task<IActionResult> GetPageUser(int pageIndex = 1, int pageSize = 10)
    {
        var pageData = await _db.Queryable<User>()
            .ToPageListAsync(pageIndex, pageSize);
        return Ok(pageData);
    }

    /// <summary>
    /// 修改用户信息
    /// </summary>
    [HttpPut("Update")]
    public async Task<IActionResult> UpdateUser([FromBody] User user)
    {
        int rows = await _db.Updateable(user).UpdateColumns(x => new { x.UserName, x.Phone }).ExecuteCommandAsync();
        return Ok($"修改成功,影响行数:{rows}");
    }

    /// <summary>
    /// 删除用户
    /// </summary>
    [HttpDelete("Delete/{id}")]
    public async Task<IActionResult> DeleteUser(int id)
    {
        int rows = await _db.Deleteable<User>().In(id).ExecuteCommandAsync();
        return Ok($"删除成功,影响行数:{rows}");
    }
}

九、常见问题排查

  • 数据库连接失败:检查PostgreSQL服务是否正常运行、默认端口5432是否未被占用、连接字符串的地址、库名、账号密码是否正确,确保本地数据库已提前创建。
  • 主键自增失效:实体主键必须配置 IsIdentity = true,PostgreSQL依赖序列实现自增,CodeFirst建表会自动生成序列,请勿手动修改数据表主键规则。
  • SQL语法兼容报错:注册服务时必须指定 DbType.PostgreSQL,严格适配PG数据库语法,禁止使用SqlServer默认配置,否则会出现语法解析异常。
  • 表名字段大小写适配问题:本项目已关闭PG自动转小写配置(PgSqlIsAutoToLower=false),实体特性配置的表名、字段名需和数据库严格一致,统一采用小写命名规范即可正常适配。
  • 项目启动建表无效:检查Program.cs中是否正确调用 app.InitTables() 扩展方法,确保SqlSugarCore服务注册正常、服务作用域可正常获取数据库实例。

十、总结

通过以上完整步骤,已从零完成 asp.net core webapi + SqlSugarCore 5.1.4.214 + PostgreSQL 的基础整合配置。教程全程基于Rider开发环境,采用.NET CLI标准安装方式、规范的数据库连接配置、程序启动自动CodeFirst建表方案,同时实现了全套异步CRUD基础接口(新增、查询、修改、删除、分页查询)。SqlSugarCore完美适配PostgreSQL数据库特性,规避了大小写兼容、语法适配等常见坑,配置简洁、代码轻量化,满足项目基础数据库开发需求,可直接用于日常开发与项目落地。

十一、项目源码地址

本文完整实战项目代码已上传至码云Gitee,包含所有配置文件、实体类、扩展方法、CRUD接口,可直接克隆运行学习:

Gitee仓库地址:https://gitcode.com/GUOGUOXYES/SqlSugarPgDemo

仓库代码与本文教程完全同步,基于 Rider + asp.net core webapi + SqlSugarCore 5.1.4.214 + PostgreSQL 实现,开箱即用。

目录
相关文章
|
3天前
|
云安全 人工智能 运维
阿里云SecOps Agent,全新安全跨产品执行体验
自然语言驱动 云安全中心/WAF/CFW/ 等多款安全产品联动
1592 2
|
3天前
|
机器学习/深度学习 人工智能 调度
🐴 HappyHorse 1.1 现已上线阿里云百炼!快来查收模型使用指南,现在调用享 6 折~
HappyHorse 1.1 是新一代视频生成大模型,全面升级动态表现力、角色一致性、指令遵循、视觉质感与音画协同能力。支持I2V/T2V/R2V三类生成,适配短剧、电商广告、品牌营销等场景,提供高质、流畅、可控的AI视频生产力。
557 3
🐴 HappyHorse 1.1 现已上线阿里云百炼!快来查收模型使用指南,现在调用享 6 折~
|
14天前
|
缓存 测试技术 API
Qwen 3.7 Plus 与 Max 实测:性价比与多模态能力差异解析(2026)
2026 年 6 月 1 日,阿里悄无声息地发布了 Qwen 3.7 Plus,距 Qwen 3.7 Max 上线刚好 11 天。同样的 1M 上下文,同样的 35 小时自治上限。但价格才是头条:Plus 是 0.40/M输入,Max是 2.50/M——便宜约 6 倍——并且还能看图、看视频。Vision Arena 上 Plus 已经排到 #16。所以这周真正值得讨论的问题不是”要不要为视觉能力买单”,而是”Max 凭什么用 6 倍价格换来 2 个百分点的 benchmark 领先”。
|
15天前
|
JavaScript 定位技术 API
CodeGraph 爆火:编程 Agent 需要的不是更多上下文,而是一张提前画好的代码地图
CodeGraph 是一款爆火的本地代码智能工具,通过 tree-sitter 解析 AST 构建结构化知识图谱(存于 SQLite),为编程 Agent 提前生成“代码地图”。它显著降低 Agent 在中大型项目中的探索成本——实测工具调用减少71%、Token 降57%、速度提升46%,支持19+语言及主流框架路由识别,完全离线、无需 API Key。
899 11
CodeGraph 爆火:编程 Agent 需要的不是更多上下文,而是一张提前画好的代码地图
|
2天前
|
人工智能 监控 前端开发
Electron 监控:让桌面 Agent 监控触手可及
一行代码实现Electron桌面端全景监控,自动还原崩溃现场、预警内存泄漏、全链路追踪、 SSE流式响应与交互埋点,让 AI 助手运行状态清晰可见,助力快速恢复稳定与流畅。
177 125
|
2天前
|
消息中间件 人工智能 Kafka
AI 时代,实时入湖正在告别 ETL:从 Kafka 到 Iceberg 的架构减法
本文围绕“零 ETL”这一趋势,讨论流数据入湖为什么需要做架构减法,并结合 Kafka × Table Bucket 的实践,分析一种将通用入湖能力前移到消息与表存储链路中的方案,如何在降低复杂度的同时,兼顾实时性、一致性、Schema 演进、CDC 语义与开放生态兼容。
182 121
|
7天前
|
缓存 人工智能 运维
GLM 5.2自托管全流程实战:硬件选型、vLLM/SGLang部署与成本盈亏测算
2026年智谱发布GLM 5.2超大混合专家模型,区别于以往仅开放API的闭源大模型,该模型权重以MIT开源协议对外发布,企业与开发者可完整下载、本地审计、私有化部署,实现数据不出环境、自定义微调、自主调度推理资源。GLM 5.2拥有753B总参数,原生支持百万级上下文窗口,在代码生成、长文档推理、数学逻辑等多项基准测试中对标国际顶尖商用模型,是首款可完整自托管的前沿代码向大模型。
613 0
|
15天前
|
人工智能 运维 JavaScript
阿里云Qoder CN(原通义灵码)全解析 产品形态、版本划分与技术适配说明
在AI辅助开发与智能办公工具持续普及的当下,阿里云旗下原通义灵码正式更名为Qoder CN,同时延伸出QoderWork CN、Qoder CN CLI、Qoder CN Mobile等多款配套产品,形成覆盖代码开发、日常办公、终端交互、移动端使用的完整工具矩阵。Qoder CN核心定位为AI智能编码助手,深度适配主流代码编辑器、集成开发环境以及终端场景;QoderWork CN则偏向桌面端综合办公辅助,二者面向不同使用场景,划分了多个版本档位,搭配差异化资源配额、功能权限与计费规则,同时兼容多款主流大模型。
974 8