最近在使用 Linq To Entity 时,在自己程序BUG中对的分页的一些小理解。

先来看看 什么是 Linq To Entity:

从字面意思来看是通过Linq 来检索数据模型,那么什么又是数据模型呢?

数据模型的概念很宽泛,在Linq to Entity 中,我们可以把它理解为数据结构的印射,直白点说,就是他的模型结构和你在数据库中指定表的结构相一致。

相应的Linq to Entity 用白话来讲术的话,就是我们在查询数据模型,由于模型结构和你在数据库中指定表的结构相一致,所以在最底层的查询中,其实

还是在对数据库表进行操作,Linq to entity 更多的是体现面向对象、且易理解、易维护的编程思想。

(小弟不才,理解方面不够严谨,后续有待矫正部分用词)

(1)、Linq To Entity 在执行查询的时候依旧就是要转换成拼接好的 SQL 语句在进行查询,修改、新增操作。

Linq To Entity 很好的展现的面向对象的查询,例子如下:

using (NISMemberEntities nis = new NISMemberEntities())
       {

var query = (from m in nis.Bs_Class

where m.id=100
                             select new ClassEntity

{

ID=m.id,

Name= m.Name

} ).FirstOrDefault();

}

在读这段代码的时候,给开发者的直观感觉就是,数据表成为了一个对象集合,而且我们只是从这个集合中取我们想要的对象。

(2)、我在这里想描述的重点是 Linq to Entity 的分页

using (NISMemberEntities nis = new NISMemberEntities())
       {

var query = (from m in nis.Bs_Class

where m.id=100

orderby m.id descending
                             select m).Skip(startRowIndex).Take(maximumRows);

}

这是一个简单的分页,startRowIndex为查询的起始索引,maximumRows为要显示的条数。(注意,要分页的话,必需要排序,即有orderby语句)

要注意了,这个查询没有条件,我们给它加点条件

using (NISMemberEntities nis = new NISMemberEntities())
       {

var query = (from m in nis.Bs_Class

where m.id=100

orderby m.id descending
                             select m).Skip(startRowIndex).Take(maximumRows);

query = query.where(r=>r.name=="新概念");

}

我们初始化startRowIndex的值为30,maximumRows同样为30,即现在翻到第二页了,第一页是(1-30),第二页(30-30),前为索引,后为查询条数,

在执行上面代码后,我们会发现第二页只显示了6条,有时候又是5条,页数据库显示第二页是有30条记录的,那么这是为什么呢?

原因就在于,我在分页后又执行了条件过滤,即query = query.where(r=>r.name=="新概念");

这就是说,在Linq to Entity 中,分页的执行和 条件过滤是有顺序的,即在条件过滤后在执行分页.

在日常的开发中,习惯性的 将.Skip(startRowIndex).Take(maximumRows);放到了条件过滤之前。

虽然是个简间的问题,但是,先记下来,当以后记。

(3)、我们会常常把结果集返回,比如  query.ToList();

分页一定要在ToList()前执行,我在执行程序中,感觉这样性能更快一些。至于原因,待我去发现发现。

就写到这里,谢谢大家,祝好。

转载于:https://www.cnblogs.com/mbailing/archive/2010/11/17/1879814.html

Linq To Entity 的分页讨论相关推荐

  1. Entity framewrok (linq to entity)查询优化的一点摸索

    对于linq to entity 生成的复杂sql语句相信已经困扰大家很久了,本人也是.从接触实体框架到现在,一直都是边学边用,用啥学啥,没有系统的学习过.同时所接触项目也对性能方面没什么要求,所以本 ...

  2. linq to object 、linq to sql 、linq to entity 批量 新增、更新、删除功能扩展

    最近在codeplex上找到了一个功能比较全的linq to object .linq to sql .linq to entity新增.修改.删除功能扩展的控件--magiq. 以linq to s ...

  3. linq to entity 左联接 右连接 以及内连接写法的区别(转)

    linq to entity 左连接 右连接 以及内连接写法的区别  还有就是用lambda表达式怎么写,那个效法效率高些? [解决办法] 左连右连还是内连这个其实你不需要关心.只需要根据实体的映射关 ...

  4. Entity Framework (EF)/Linq To entity/ ESQL(entity sql)区别 ADO.NET Entity Framework:来自微软官方的ORM框架

    长久以来,程序员和数据库总是保持着一种微妙的关系,在商用应用程序中,数据库一定是不可或缺的元件,这让程序员一定要为了连接与访问数据库而去学习 SQL 指令,至少对于我而言,我觉得这是一个很不爽的事情. ...

  5. Linq to Entity中连接两个数据库时要注意的问题

    Linq to Entity中连接两个数据库时要注意的问题 今天大学同学问了我一个问题,Linq to Entity中连接两个数据库时,报错"指定的 LINQ 表达式包含对与不同上下文关联的 ...

  6. Webform(Linq高级查、分页、组合查询)

    一.linq高级查 1.模糊查(包含) 1 public List<User> Select(string name) 2 { 3 return con.User.Where(r => ...

  7. linq to entity 基础

    部分摘抄  http://www.cnblogs.com/nikymaco/archive/2012/07/11/2585594.html linq(语言集成查询)在对象领域和数据领域之间架起了一座桥 ...

  8. 在Linq to Entity 中使用lambda表达式来实现Left Join和Join

    1.读取用户和部门两个表的左连接: var sg = db.Users.GroupJoin(db.Departments, u => u.DepartmentId, d => d.Depa ...

  9. LINQ TO ENTITY 根据Birthday获取Age

    from emp in EmployeeInfo let years = EntityFunctions.DiffYears(emp.Birthday.Value,DateTime.Now) let ...

最新文章

  1. python中numpy数组和字符串互转(互转后数据完全一致)
  2. python pandas读取excel-Python使用Pandas读写EXCEL文件教程
  3. UA MATH564 概率不等式 QE练习题
  4. 使用Visual Studio 创建新的Web Part项目
  5. SQLServer2008设置 开启INTERNET远程连接(转)
  6. LINUX移植——内核移植(一)
  7. 关于绕开百度文库复制限制的那档子事
  8. 关于“商用超极本应用体验分享沙龙”的体验之旅——商用超极本的崛起之路、真机实测、优缺点分析与使用评价
  9. MYSQL 数据库的常用语句
  10. ET城市大脑出海:阿里云发展世界级创新技术业务
  11. grandMA2onPC控制UE4灯光
  12. doc 问卷调查模板表_问卷调查Word模板.doc
  13. php 中mb开头什么意思,mb是兆的意思吗
  14. php smtp.163 端口号,常用的邮箱服务器(SMTP、POP3)地址、端口
  15. 请问论文开题报告和提纲怎么写?
  16. 深度学习在训练时对图片随机剪裁(random crop)
  17. 麻姑山行,记南城麻姑山一日游
  18. 用python抢火车票
  19. 想装吗?看看装B大全
  20. 老师计算机组合照说说,有关于老师的说说句子

热门文章

  1. 长途货运4大痛,Uber新上的「自动驾驶卡车」如何改善?
  2. 炸了!这届ICLR论文被指太“渣”?Goodfellow围追堵截要说法
  3. 浏览器事件循环机制与Vue nextTick的实现
  4. Application Architecture Guide 2.0 - CH 19 - Mobile Applications(2)
  5. python manage.py startapp app 时候报错No module named _sqlite3
  6. 综述:全国软考首遭试卷丢失 20万考生措手不及
  7. 制作本地yum镜像站
  8. MongoDB学习笔记lt;七gt;
  9. Hibernate入门案例及增删改查
  10. RequireJS对文件合并与压缩实现方法