Entity Framework之IQueryable和list本地集合

时间:2024-08-26 14:07:50

我们来说一下Iqueryable集合和List等本地集合的区别,下面我们通过建立一个简单的例子来学习这个知识点,直接进入主题吧

1.首先对比一下两段代码?看一下有什么结果:

  (1) 第一段代码如图所示:

    Entity Framework之IQueryable和list本地集合

  (2)第一段代码使用数据库的Profiler查看执行结果:  

    Entity Framework之IQueryable和list本地集合

  (3)第二段代码如图所示:

    Entity Framework之IQueryable和list本地集合

  (4) 第一段代码使用数据库的Profiler查看执行结果:

    Entity Framework之IQueryable和list本地集合

2.IQueryable

  (1) IQueryable表达式分为三个项,第一个是查询数据的表达式,第二个是元素类型,第三个是:查询数据Provider,每次我们需要取出集合里面的数据的话,Provider都回去解析查询数据的表达式,解析完之后再去数据库将数据取出来,传递给集合使用

3.List,Array,IEnumable等本地类型的集合

  (1) 本地类型的存储数据就像是往箱子里面塞东西,你想往里面放就放,然后当我们使用的时候,直接遍历一下拿出来就行了,而IQeurable是你使用数据的时候先让Provider解析查询数据的表达式,,然后去响应的地方去查询数据。而List等已经在本地存放了,你只需要拿出来使用就行了

4. 本地集合(List和Array等集合)和IQuerable图示信息

  Entity Framework之IQueryable和list本地集合

5.知识点总结

  (1) 解决查询多次的问题,因IQueryable延迟加载,当用到集合的时候,provider会解析表达式,然后生成查询,所以会走一个复杂的过程。

  (2) 本地集合:List,Array都是本地集合,都是缓存在里面的

  (3) 使用EF管理上下文实例的最佳选择是线程的唯一。

  (4) IEnumable和IQueryable一样都是延迟加载,IEnumable针对的是本地数据,内存中的,IQueryable针对的是远程数据,比如数据库