• EntityFramework 4使用存储过程分页


     1 CREATE PROC usp_OrgPage_SQL
     2 @pageIndex INT,
     3 @pageSize INT,
     4 @totalCount INT OUTPUT
     5 AS
     6     BEGIN
     7         SET @totalCount = (SELECT COUNT(*) FROM dbo.Organization)
     8         SELECT * FROM
     9         (
    10         SELECT *,ROW_NUMBER() OVER(ORDER BY OrganizationID DESC)AS row FROM dbo.Organization
    11         )AS res
    12         WHERE res.row BETWEEN @pageSize * (@pageIndex - 1) + 1 AND @pageSize * @pageIndex
    13     END

     1 public List<OrganizationModel> SelectPageList(int pageIndex, int pageSize, out int totalCount)
     2         {
     3             var cmd = DbContext.Connection.CreateCommand();
     4             cmd.CommandText = "kydContext.usp_OrgPage_SQL";
     5             cmd.CommandType = System.Data.CommandType.StoredProcedure;
     6             cmd.Parameters.Add(new EntityParameter
     7             {
     8                 ParameterName = "pageIndex",
     9                 Value = pageIndex
    10             });
    11             cmd.Parameters.Add(new EntityParameter
    12             {
    13                 ParameterName = "pageSize",
    14                 Value = pageSize
    15             });
    16             cmd.Parameters.Add(new EntityParameter
    17             {
    18                 ParameterName = "totalCount",
    19                 Direction = System.Data.ParameterDirection.Output
    20             });
    21 
    22             cmd.Connection.Open();
    23             DbDataReader reader = cmd.ExecuteReader(System.Data.CommandBehavior.SequentialAccess);
    24             List<OrganizationModel> organizationModelList = new List<OrganizationModel>();
    25             while (reader.Read())
    26             {
    27                 OrganizationModel organizationModel = new OrganizationModel();
    28                 organizationModel.OrganizationID = reader.GetInt32(reader.GetOrdinal("OrganizationID"));
    29                 organizationModel.OrganizationName = reader.GetString(reader.GetOrdinal("OrganizationName"));
    30                 organizationModelList.Add(organizationModel);
    31             }
    32             reader.Close();
    33             totalCount = Convert.ToInt32(cmd.Parameters["totalCount"].Value);
    34             cmd.Connection.Close();
    35             return organizationModelList;
    36         }

    对于EntityFramework调用存储过程通常想到的是"Context.ExcuteFunction()"。

    但是ExcuteFunction不返回任何结果,只有影响的行数,所以如果是通过存储过程实现分页及查询还得使用传统的command方式

    本文版权归作者和博客园共有,来源网址:http://www.cnblogs.com/tq1226112215/
    欢迎各位转载,但是未经作者本人同意,转载文章之后必须在文章页面明显位置给出作者和原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    求最大公约数伪代码
    XOR加密
    20201225张晓平第五周学习
    pep9课下作业 张晓平
    20201225 张晓平《信息安全专业导论》第四周学习总结
    寻找黑客偶像 20201225张晓平
    《信息安全专业导论》第九周学习总结
    《信息安全专业导论》第八周学习总结
    《信息安全专业导论》第七周学习总结
    《信息安全专业导论》第6周学习总结
  • 原文地址:https://www.cnblogs.com/tq1226112215/p/3761469.html
Copyright © 2020-2023  润新知