Dapper 操作 PostgreSQL 数据库完全指南

系列文章目录


文章目录


前言

Dapper 是一个高性能的 ORM 框架,可用于简化与数据库的交互。本文将详细介绍如何使用 Dapper 操作 PostgreSQL 数据库,包括连接配置、CRUD 操作以及示例代码。


一、准备工作

首先,确保你的项目中已经添加了 Dapper 和 Npgsql 包。你可以使用以下命令进行安装:

bash 复制代码
dotnet add package Dapper
dotnet add package Npgsql

二、配置数据库连接

在 appsettings.json 中添加 PostgreSQL 数据库连接配置:

json 复制代码
{
  "ConnectionStrings": {
    "DefaultConnection": "Host=localhost;Port=5432;Database=your_database;Username=your_username;Password=your_password;"
  }
}

三、创建数据实体类

创建一个数据实体类,对应数据库中的表:

csharp 复制代码
{
 public class Product
{
    public int Id { get; set; }
    public string Name { get; set; }
    public decimal Price { get; set; }
}

四、实现 CRUD 操作

在业务逻辑层中,通过 Dapper 来实现 CRUD 操作:

csharp 复制代码
using Dapper;
using Microsoft.Extensions.Configuration;
using Npgsql;
using System.Collections.Generic;
using System.Data;
using System.Linq;

namespace YourNamespace
{
    public class ProductService
    {
        private readonly IConfiguration _config;

        public ProductService(IConfiguration config)
        {
            _config = config;
        }

        private IDbConnection Connection => new NpgsqlConnection(_config.GetConnectionString("DefaultConnection"));

        public List<Product> GetAllProducts()
        {
            using IDbConnection dbConnection = Connection;
            dbConnection.Open();
            return dbConnection.Query<Product>("SELECT * FROM products").ToList();
        }

        public Product GetProductById(int id)
        {
            using IDbConnection dbConnection = Connection;
            dbConnection.Open();
            return dbConnection.QueryFirstOrDefault<Product>("SELECT * FROM products WHERE id = @Id", new { Id = id });
        }

        public void InsertProduct(Product product)
        {
            using IDbConnection dbConnection = Connection;
            dbConnection.Open();
            dbConnection.Execute("INSERT INTO products (name, price) VALUES (@Name, @Price)", product);
        }

        public void UpdateProduct(Product product)
        {
            using IDbConnection dbConnection = Connection;
            dbConnection.Open();
            dbConnection.Execute("UPDATE products SET name = @Name, price = @Price WHERE id = @Id", product);
        }

        public void DeleteProduct(int id)
        {
            using IDbConnection dbConnection = Connection;
            dbConnection.Open();
            dbConnection.Execute("DELETE FROM products WHERE id = @Id", new { Id = id });
        }
    }
}

五、使用示例

在控制器中使用 ProductService 进行操作:

csharp 复制代码
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Configuration;
using YourNamespace.Models;
using YourNamespace.Services;

namespace YourNamespace.Controllers
{
    [ApiController]
    [Route("api/[controller]")]
    public class ProductController : ControllerBase
    {
        private readonly ProductService _productService;

        public ProductController(IConfiguration config)
        {
            _productService = new ProductService(config);
        }

        // ... 编写 API 方法,调用 ProductService 中的相应方法
    }
}

总结

通过本文,你已经学会如何使用 Dapper 操作 PostgreSQL 数据库。Dapper 提供了一种轻量级、高性能的数据访问方式,适用于各种类型的项目。希望本文对你在使用 Dapper 进行数据库操作时有所帮助。

如果你有任何问题或疑问,欢迎留言讨论。感谢阅读!

相关推荐
ClouGence36 分钟前
SQL 效率天花板!开源 CloudDM,自带一站式 AI SQL 助手
数据库·sql·开源
Decay__1 小时前
附-01 · MySQL 压测与容量规划 —— sysbench 基准测试、容量评估与参数基线
运维·数据库·sql·mysql·架构
这个DBA有点耶1 小时前
主从切换报成功,业务却写不进去——数据层脑裂与应用层连接残留的两类假成功
数据库·架构·dba
qq_452396231 小时前
第八篇:《VACUUM、自动清理与膨胀治理》
jvm·数据库·oracle
SelectDB技术团队1 小时前
ClickHouse 支持存算分离吗?Doris 社区版原生存算分离怎么落地
数据库·clickhouse·云原生·开源·apache doris·技术选型·存算分层
DBA_G1 小时前
南大通用GBase 8a数据库可视化灾备解决工具GVR
数据库
l1t1 小时前
DeepSeek总结的PostgreSQL 中的 SQL 与 PL/pgSQL:计划缓存
sql·缓存·postgresql
JJJennie7772 小时前
MAI Gateway实战部署:大模型网关部署方案?从0到1上手指南
数据库·人工智能·gateway·ai网关
吹什么轩2 小时前
MySQL 内连接与外连接:从笛卡尔积到 LEFT JOIN,一篇讲透
数据库·mysql
涛思数据(TDengine)2 小时前
支撑药企全球化合规:TDengine 发布中美欧三地监管对照白皮书
大数据·数据库·人工智能·ai·tdengine