ServiceStack.OrmLite 调用存储过程

最近在做关于ServiceStack.OrmLite调用存储过程时,有问题。发现ServiceStack.OrmLite不能调用存储过程,或者说不能实现我想要的需求。在做分页查询时,我需要传入参数传出参数。

ServiceStack.OrmLite 调用存储过程代码:

存储过程:usp_GetCarComponentsList 

传入参数:@page,@limit

传出参数:@pageCount ,@totalCount 

问题描述:参数传入在数据库中不能接收,不知道是写法问题,还是其他原因。即便传入能用,但是输出参数我该怎么接收?

复制代码
     var list = db.SqlList<Common_CarComponents_Params>("EXEC usp_GetCarComponentsList @page,@limit,@pageCount,@totalCount ", new
                    {
                        TrademarkId = TrademarkId,
                        SubTrademarkId = SubTrademarkId,
                        page = page,
                        limit = limit,
                        pageCount = 0,
                        totalCount = 0
                    });
复制代码

解决方案:使用Dapper的DynamicParameters用来实现就好办了。

1、步骤:

PM> Install-Package Dapper
已安装“Dapper 1.42”。
正在将“Dapper 1.42”添加到 Product.ServiceInterface。
已成功将“Dapper 1.42”添加到 Product.ServiceInterface。

代码:

复制代码
 var dynamicParameters = new DynamicParameters();
                    dynamicParameters.Add("@TrademarkId", TrademarkId);
                    dynamicParameters.Add("@SubTrademarkId", SubTrademarkId);
                    dynamicParameters.Add("@page", page);
                    dynamicParameters.Add("@limit", limit);
                    dynamicParameters.Add("@pageCount", dbType: DbType.Int32, direction: ParameterDirection.Output);
                    dynamicParameters.Add("@totalCount", dbType: DbType.Int32, direction: ParameterDirection.Output);

                    var list2 = db.QueryMultiple("usp_GetCarComponentsList", dynamicParameters, commandType: CommandType.StoredProcedure);

                    var firstSet = list2.Read().ToList();
                    int pageCount = dynamicParameters.Get<int>("@pageCount");
                    int totalCount = dynamicParameters.Get<int>("@totalCount");            
复制代码

很明显这就是一个分页查询,接下来就不用说了。

 

posted @   秋风过、枯叶落  阅读(911)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
点击右上角即可分享
微信分享提示