概述
PostgreSQL是一款开源的对象关系型数据库管理系统(ORDBMS)。它与常见的关系型数据库管理系统(RDBMS)如MySQL、Oracle和Microsoft SQL Server等不同,因为它具有更多高级功能,如对象存储、复杂查询和规范化等。
PostgreSQL提供了.NET Core(.NET 7)的连接驱动,对于一个专注C#&.NET的作者来说,写一篇关于《.NET Core(.NET 7)如何使用Dapper连接PostgreSQL数据库并实现CRUD(新增,查询,修改,删除)的超简单入门示例教程》也就顺理成章了。
那么,本文就为大家分享在C#&.NET Core(.NET 7)应用程序中如何使用Dapper连接PostgreSQL数据,同时完成简单的增,删,改,查基本操作。
本文源码下载地址:
准备工作
在开始本文C#&.NET Core应用程序使用Dapper连接 PostgreSQL数据库之前,你需要准备如下环境及组件:
- PostgreSQL数据库及管理工具(如:pgAdmin)
- .NET Core(.NET 7)开发环境
- 开发工具(Visual Studio 2019及以上版本,建议Visual Studio 2022)
- PostgreSQL示例表创建脚本
本文以简单的员工(employee)信息管理为示例,示例数据表的SQL脚本如下:
注:本示例的PostgreSQL架构(Schema)为
dbo
,登录用户名为dev
,请自行对应你的数据库架构。
向示例数据表中写入一条测试测试,INSERT INTO
脚本如下:
结果如下图所示:
开始
首先,创建一个名为PostgresDemo的.NET Core(.NET 7) Web API应用程序项目。
1.选择程序项目模板为:ASP.NET Core Web API,如下图:
2.配置项目的项目名称,项目路径,解决方案名称等基础信息,如下图:
3.配置项目的附加信息(目标框架版本,身份验证方式等),如下图:
以上三个步骤的信息填写完成后,点击【Create】按钮以创建项目。创建好的项目模板如下:
在C#&.NET Core(.NET 7)使用Dapper连接PostgreSQL数据库的操作中,需要用到Npgsql
,Dapper
这两个Nuget程序包,.NET CLI安装命令如下:
或者,我们也可以使用Visual Studio中的Nuget程序包管理工具安装,如下:
配置数据库连接
1.在appsettings.json
配置文件中添加PostgreSQL的连接配置,如下:
示例程序功能开发
在项目根目录下分别创建Models和Dtos文件夹,在Models文件夹中新建员工类Employee.cs
,员工属性信息如下:
查询员工列表
在PostgresDemo项目的Controllers
控制器目录下新建一个名为EmployeeController.cs
的控制器类并修改[Route("[controller]")]
,示例代码如下:
接着,在EmployeeController.cs
控制器类中新增查询员工列表的接口服务,示例代码如下:
完成上述步骤后,我们将PostgresDemo项目运行起来,在浏览器中打开项目swagger文档地址:http://localhost:5119/swagger/index.html
,再执行其中的api/Employee/Employees
接口,得到如下的运行结果:
到这里,细心的读者可能注意到了,Employee.cs
中的属性均是以CamelCase方式命名的(如:Id,LoginName),但上文的SQL脚本中字段名却是以小写和以划线方式命名的(如:id,login_name)。
所以,如果直接使用Dapper查询的话,无法完成数据库字段到C#属性的映射。也就是查询到的结果中,loginName
和createdAt
这两个属性对应的值是不正确的,如图所示:
为了解决这个问题,我们需要在Program.cs
中配置Dapper的数据库字段与属性默认映射使用下划线模式,代码如下:
此时的Program.cs
代码如下:
重新运行项目,再在swagger中执行调用上面的接口,得到正确的员工数据列表如下图:
封装PostgreSQL的常用操作
1.为了代码复用,在项目根目录下创建一个名为NpgHelper.cs
的类,用来管理PostgreSQL的相关操作,示例代码如下:
2.配置PostgreSQL数据库连接,打开Program.cs
文件,在其中调用NpgHelper.Configure()
方法来配置PostgreSQL的配置参数,如下:
3.修改EmployeeController
控制器的代码,使用NpgHelper
来创建PostgreSQL的连接对象,示例如下:
重新运行,得到与上面相同的结果:
新建员工信息
这里,我们将使用Dapper在PostgreSQL数据库的dbo.empolyee
表中创建新的员工信息。
在项目的Dtos/目录中创建名为Employee的目录,并新建一个CreateEmployeeRequestDto.cs
的DTO实体类文件,代码如下:
此时的项目结构如下:
然后,在EmployeeController控制器中新增创建员工的Create(CreateEmployeeRequestDto request)
,示例如下:
保存并重新运行项目,可以看到swagger文档中多了刚创建的创建用户的接口,如下图:
现在,在api/Employee/Create
的接口服务创建用户,示例数据如下:
运行结果如下:
重新调用api/Employee/Employees
接口,查看PostgreSQL数据库中员工表(dbo.employee)中是否有两条员工信息,得到的结果如下:
更新员工信息
在项目的Dtos/Employee目录中新建一个UpdateEmployeeRequestDto.cs
的DTO实体类文件,代码如下:
此时的项目结构如下:
然后,在EmployeeController控制器中新增更新员工的方法Update(UpdateEmployeeRequestDto request)
,示例如下:
保存并重新运行项目,可以看到swagger文档中多了刚创建的更新用户接口,如下图:
现在,调用api/Employee/Update
的接口服务更新id
为2
的用户信息,示例数据如下:
运行结果如下:
重新调用api/Employee/Employees
接口,查看PostgreSQL数据库中员工表(dbo.employee)中是否有两条员工信息,得到的结果如下:
删除员工信息
删除PostgreSQL数据库的员工信息就比较简单一些了,这里我们根据员工的ID进行删除,在控制器EmployeeController中创建方法Delete(int id)
,示例代码如下:
保存并重新运行项目,可以看到swagger文档中多了刚创建的删除用户接口,如下图:
现在,调用api/Employee/Delete/{id}
的接口服务删除id
为2
的用户信息,运行结果如下:
重新调用api/Employee/Employees
接口,查看PostgreSQL数据库中员工表(dbo.employee)中是否有两条员工信息,得到的结果如下:
总结
以上就是本文关于《.NET Core(.NET 7)如何使用Dapper连接PostgreSQL数据库并实现CRUD(新增,查询,修改,删除)的超简单入门示例教程》的所有内容,希望对你的C#&.NET Core(.NET 7)操作PostgreSQL数据有帮助。
我是Rector,专注C#&.NET开发,关注我,解锁更多开发技巧。
本文源码下载地址:
版权声明:本作品系原创,版权归码友网所有,如未经许可,禁止任何形式转载,违者必究。
发表评论
登录用户才能发表评论, 请 登 录 或者 注册