EF导航属性真分页查询

        在最近做的人事档案重构项目中,由于需求要求不要用视图、存储过程等,而且这个项目数据库字段的数量实在是令人发指,就我负责的综合信息查询来说,一个页面要显示7张表的数据,字段加起来都百八十个了。

        首先看一下数据库结构:

       

         basicInfomation是基本信息表,主键是nowTechnicalRecords(技术档案)的外键。现在页面上要显示的是一部分基本信息表的信息,一部分是技术档案的信息。所以需要根据导航属性进行关联查询。

          通过查ef的文档,知道有个方法是用来进行关联查询的:include()。以下是关联查询和真分页的实践:

 /// <summary>
        /// 分页查询
        /// </summary>
        /// <typeparam name="Tkey"></typeparam>
        /// <param name="pageSize">每页显示条数</param>
        /// <param name="pageIndex">第几页</param>
        /// <param name="total">总条数</param>
        /// <param name="whereLambda">查询条件的lambda表达式</param>
        /// <param name="orderbyLambda">排序的lambda表达式</param>
        /// <returns></returns>
        public List<T_NowTechnicalRecords> QueryBasicInfo<Tkey>(int pageSize, int pageIndex, 
                              out int total, Expression<Func<T_NowTechnicalRecords, bool>> whereLambda,
                               Expression<Func<T_NowTechnicalRecords, Tkey>> orderbyLambda) 
       { 
            renshiEntities db =new renshiEntities();                           //定义数据库上下文
            total = db.Set<T_NowTechnicalRecords>().Where(whereLambda).Count();//总记录数
            var temp = db.T_NowTechnicalRecords.Include("T_BasicInformation")   //进行ef查询
                                .Where(whereLambda)
                                .OrderBy(orderbyLambda)
                                .Skip(pageSize * (pageIndex - 1))
                                .Take(pageSize);
            
            return temp.AsQueryable().ToList();//转换成list
        }
           这样,在temp中就可以查询到第pageIndex页共有pageSize条数据,数据中,BasicInformation作为NowTechnicalRecords的属性被查询出来。

           返回到页面上:

首先要定义model:

@model IEnumerable<TalentServiceCenterFileManage.Model.T_NowTechnicalRecords>
然后在td标签中绑定字段:

<tr>
          @*nowTechnicalRecords表字段*@
        <th>nowoRiginalTitle</th>
        <th>createTime</th>
        <th>nowEonDate</th>
         @*basicInformation表字段*@
         <th>num</th>
         <th>name</th>
</tr>
        @foreach (var item in Model)
        {
            <tr>
            <td>@item.nowoRiginalTitle</td>
              <td>@item.createTime</td>
              <td>@item.nowEonDate</td>
              <td>item.T_BasicInformation.num</td>
               <td>item.T_BasicInformation.name</td>
 
           </tr>   
        }
这样就实现了ef导航属性真分页查询。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值