C#中如何使用Dapper的存储过程支持?示例代码是什么?

使用Dapper调用存储过程需设置commandType: CommandType.StoredProcedure,通过匿名对象或DynamicParameters传递参数;2. 输出参数和返回值需用DynamicParameters定义并获取;3. 多结果集使用QueryMultipleAsync读取。确保连接有效、存储过程存在及参数配置正确。

C#中如何使用Dapper的存储过程支持?示例代码是什么?

在C#中使用Dapper调用存储过程非常简单。你只需要通过 IDbConnection 接口执行查询,并设置 CommandType.StoredProcedure,Dapper 就会以存储过程方式执行命令。

1. 基本语法和参数传递

Dapper 使用 DynamicParameters 或匿名对象传参,推荐使用后者简化代码。

 using (var connection = new SqlConnection(connectionString)) {     var parameters = new     {         UserId = 1,         Status = "Active"     };      var result = await connection.QueryAsync<User>(         "sp_GetUsersByStatus",         parameters,         commandType: CommandType.StoredProcedure); } 

2. 输出参数和返回值处理

当存储过程包含输出参数或返回值时,使用 DynamicParameters 来接收。

C#中如何使用Dapper的存储过程支持?示例代码是什么?

芦笋演示

一键出成片的录屏演示软件,专为制作产品演示、教学课程和使用教程而设计。

C#中如何使用Dapper的存储过程支持?示例代码是什么?34

查看详情 C#中如何使用Dapper的存储过程支持?示例代码是什么?

 using (var connection = new SqlConnection(connectionString)) {     var dynamicParams = new DynamicParameters();     dynamicParams.Add("@UserId", 1);     dynamicParams.Add("@UserName", dbType: DbType.String, size: 50, direction: ParameterDirection.Output);     dynamicParams.Add("@ReturnCode", dbType: DbType.Int32, direction: ParameterDirection.ReturnValue);      await connection.ExecuteAsync(         "sp_GetUserName",         dynamicParams,         commandType: CommandType.StoredProcedure);      string userName = dynamicParams.Get<string>("@UserName");     int returnCode = dynamicParams.Get<int>("@ReturnCode"); } 

3. 多结果集处理(Multiple Result Sets)

如果存储过程返回多个结果集,使用 QueryMultipleAsync

 using (var connection = new SqlConnection(connectionString)) {     using (var multi = await connection.QueryMultipleAsync(         "sp_GetUserAndOrders",         new { UserId = 1 },         commandType: CommandType.StoredProcedure))     {         var users = multi.Read<User>().ToList();         var orders = multi.Read<Order>().ToList();     } } 

基本上就这些。只要确保连接字符串正确、存储过程存在,并使用 commandType: CommandType.StoredProcedure,Dapper 就能正确调用。不复杂但容易忽略细节比如参数方向或类型映射。

上一篇
下一篇
text=ZqhQzanResources