EF框架 與 Dapper框架 呼叫分頁儲存過程
阿新 • • 發佈:2020-08-06
1. SqlServer建立儲存過程:
--建立儲存過程 create proc sp_Show ( @index int, --當前頁 @size int, --每頁大小 @totalcount int out, --總資料數 @pagecount int out --總頁數 ) as begin --計算總資料數 select @totalcount=COUNT(*) from Goods --(where name like '%'+ @name +'%') --計算總頁數 set @pagecount=CEILING(@totalcount*1.0/@size) if(@index<=0) set @index=1 if(@index>=@pagecount) set @index=@pagecount --分頁查詢 select * from (select ROW_NUMBER() over(order by GId) rn,*from Goods) tb1 where --(where name like '%'+ @name +'%') rn between ((@index-1)*@size)+1 and (@index*@size) end declare @xint,@y int exec sp_Show 1,2,@x out,@y out select @x 總資料數,@y 總頁數
2.Entity FrameWork框架:
//分頁儲存過程顯示 [HttpGet] public PageDate GetGoods2(int index, int size) { //例項化引數 SqlParameter[] parameters = new SqlParameter[] { new SqlParameter("@index",index), new SqlParameter("@size",size), new SqlParameter("@totalcount",SqlDbType.Int), //總資料數 new SqlParameter("@pagecount",SqlDbType.Int), //總頁數 }; //指定輸出引數 parameters[2].Direction = ParameterDirection.Output; parameters[3].Direction = ParameterDirection.Output; //儲存過程查詢 var list = db.Database.SqlQuery<Goods>("exec sp_Show @index,@size,@totalcount out,@pagecount out", parameters).ToList(); PageDate page = new PageDate(); page.List = list; page.PageCount = int.Parse(parameters[3].Value.ToString()); return page; }
3.Dapper框架:
//儲存過程分頁 [HttpGet] public PageDate GetGoods2(int index, int size) { //新增引數 var p = new DynamicParameters(); p.Add("@index", index); p.Add("@size", size); //指定輸出引數 p.Add("@totalcount", dbType: DbType.Int32, direction: ParameterDirection.Output); //總資料數 p.Add("@pagecount", dbType:DbType.Int32,direction:ParameterDirection.Output); //總頁數 List<Goods> list = new List<Goods>(); using (SqlConnection conn = new SqlConnection(connstr)) { list = conn.Query<Goods>("sp_Show",p,commandType:CommandType.StoredProcedure).ToList(); } PageDate page = new PageDate(); page.List = list; //獲取指定的引數值 page.PageCount = p.Get<int>("@pagecount"); return page; }