1. 程式人生 > 實用技巧 >EF框架 與 Dapper框架 呼叫分頁儲存過程

EF框架 與 Dapper框架 呼叫分頁儲存過程

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 @x
int,@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;
        }