|
主题设置

卡片式面板通常用于非白色背景色的主体内

Dapper 连接 DB

Dapper是一个轻量级的 ORM(对象关系映射)框架,专门用于 .NET 平台。

Dapper 介绍

Dapper 是一个功能强大且性能优越的 ORM 框架,特别适合那些希望保持原生 SQL 灵活性和高效性能的开发人员使用。

Dapper 的优点包括:

  • 高性能:与其他 ORM 框架相比,Dapper 执行速度更快,因为它尽可能地接近原生 SQL。
  • 简单易用:Dapper 的 API 非常简洁明了,容易上手,不需要复杂的配置。
  • 简单易用:Dapper 的库文件很小,不会增加项目的体积,适合各种规模的应用。
  • 支持多种数据库:Dapper 可以与各种主流数据库进行配合,包括 SQL Server、MySQL、PostgreSQL 等。

重要提示

在使用 Dapper 的项目中,不要用 dapper 去命名任何文件,包括项目名和解决方案名,因为这会导致命名空间冲突,从而使用不了 Dapper 。

下面的截图中,可以见到项目名称使用了 Dapper,这导致我启动项目后,调用 API 一直报错,最终重新创建了项目才得以解决。

创建 Dapper 工具类

先安装 Dapper 包,在项目上 右键——管理NuGet程序包,打开 NuGet 包管理器。

在 “浏览” 中搜索 Dapper,在搜索结果中点击 Dapper 进行安装。

安装完成后在项目下创建 Utility 文件夹

因为我没有把数据库连接字符串写在 Dapper.cs 工具类中,而是写在了 Web.config 文件中,所以先写一个操作 Web.config 文件的工具类:Web.config 下载

在 Utility 文件夹中创建 ConfigUtil.cs 工具类,这个工具类的作用是设置 Web.config 文件中 connectionStrings 和 appSettings 里面的键值对信息。

写入 ConfigUtil.cs 工具类的内容:ConfigUtil.cs 下载

需要注意的是 ConfigUtil.cs 工具类获取 .config 的配置文件时,对于 Web API 和 exe 程序的设置不一样,代码中有备注说明。

在 Utility 文件夹中创建 DapperUtil.cs 工具类

写入 DapperUtil.cs 工具类的内容:DapperUtil.cs 下载

如果 DapperUtil.cs 工具类里面没有用 DbProviderFactories 工厂创建数据库连接对象, 而是用 SqlConnection 或 MySqlConnection 直接创建数据库连接,那么使用 MySqlConnection 时,需要安装 MySql.Data 包。

创建用户表

在 MySQL 数据库中,创建 Users 表。

create table users(
	id int primary key auto_increment comment 'id',
	code varchar(36) comment '用户代码',
	name varchar(55) comment '用户姓名',
	age int comment '年龄',
	pwd varchar(55) comment '密码',
	if_active char(1) comment '是否有效',
	if_delete char(1) comment '是否删除',
	update_time datetime comment '更新时间',
	create_time datetime comment '记录时间'
) comment = '用户表';

创建实体类

在 Models 文件夹中创建实体类 Users(没有 Models 文件夹则先创建)

创建 Daos 层

在项目下创建 Daos 文件夹

创建 UsersDao.cs 类

在 UsersDao.cs 类中写入操作数据库的方法:UsersDao.cs 下载

创建 Services 层

在项目下创建 Services 文件夹

创建 UsersService.cs 类

在 UsersService 中写入 调用 UsersDao 的方法:UsersService.cs 下载

创建 UserController

创建返回类

先在 Models 文件夹中创建 API 接口的信息返回类 BackMsg.cs

创建异常类

再在 Models 文件夹中创建自定义异常类 CustomException.cs,用于抛出自定义的异常信息,并在 Controller 中进行 Catch。

写入 CustomException.cs 异常类的内容:CustomException.cs 下载

创建用户控制器

接下来在 Controllers 文件夹下 右键——添加——Web API控制器类,创建 UserController.cs

在 UserController 中写入用户相关的 API 接口,采用 POST 的调用方式:UsersController.cs 下载

调用 API

启动项目成功

创建用户

通过 Postman 调用创建用户的 API,返回成功

查看数据库中是否成功创建

更新用户

更新用户年龄为 30,返回成功

查看数据库中是否更新成功

删除用户

调用 API 进行删除(逻辑删除)

查看数据库中是否删除成功

获取用户

调用 API 进行查询

返回 JSON 格式设置

API 接口返回 JSON 时,用的是 JsonConvert.SerializeObject(),默认返回的时间格式是:2024-06-02T22:58:06

这不是我们需要的时间格式,所以对返回的时间格式进行设置,设置 JSON 中时间格式的方法有 2 个:

  • 在 Controller 中对每个 API 接口返回的 JSON 单独设置(比较繁琐):
    // 设置日期格式
    var settings = new JsonSerializerSettings
    {
    	DateFormatString = "yyyy-MM-dd HH:mm:ss"
    };
    
    // 序列化对象并设置日期格式
    string json = JsonConvert.SerializeObject(obj, settings);
  • 在 Global.asax 中做统一设置(推荐)
    protected void Application_Start()
    {
    	AreaRegistration.RegisterAllAreas();
    	GlobalConfiguration.Configure(WebApiConfig.Register);
    	FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
    	RouteConfig.RegisterRoutes(RouteTable.Routes);
    	BundleConfig.RegisterBundles(BundleTable.Bundles);
    
    	// 统一对 JsonConvert.SerializeObject() 返回的日期格式进行设置
    	// 因为 JsonConvert.SerializeObject() 默认返回的日期格式是 2024-06-02T22:58:06,所以要设置一下
    	JsonConvert.DefaultSettings = () => new JsonSerializerSettings
    	{
    		DateFormatString = "yyyy-MM-dd HH:mm:ss"
    	};
    }

设置完时间格式后,重新调用获取用户的 API,观察到时间格式已经变成了 2024-06-02 22:58:06 的格式。

下载项目

以上步骤中创建的项目可下载:Web API 项目下载