ServiceStack.OrmLite 调用存储过程

mac2022-06-30  75

最近在做关于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");            

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

 

转载于:https://www.cnblogs.com/foreverfendou/p/5264685.html

相关资源:JAVA上百实例源码以及开源项目
最新回复(0)