zoukankan      html  css  js  c++  java
  • 经典集合 与 IQueryable集合 的差别

    经典集合 与 IQueryable集合 的差别

            经典集合与IQueryable 集合存在本质的区别,经典结合是在内存中开辟一片区域用来存储数据,而IQueryable集合是延迟加载的集合,只有在用到的时候才会到数据库中查询并且加载数据,下面来介绍IQueryable集合的实现机制。

          

    IQueryable 类型的内部构造:

    下面来看一条在EF中进行查询的语句:

    执行这条语句的以后,IQueryable<HKSJ_USERS> 类型的集合temp并没有数据,执行这条语句实际上做的事是:

    1、将linq语句解析成表达式树,保存到temp的Expression中;
    2、将HKSJ_USERS类型存到temp的ElementType中去;
    3、将EF的provider加载到temp的Provider中去。

     

    在我们遍历调用temp集合的时候,temp中的Provide就会解析temp中的Expression,得到sql语句,然后到数据库中查询数据并加载,这样看起来就好像temp中存有数据一样。

     

    有了对IQueryable集合的认识,我们学习linq的时候就会很方便了,其实linq to sql,linq to xml ,linq to object 的不同点就在于provider不同,也就是对表达式树的解析方式不同

  • 相关阅读:
    C语言——总结回顾
    C语言——第十四、十五周作业
    题目思路——统计素数并求和
    题目思路——单词长度
    C语言——第七周作业
    C语言——第六周作业
    C语言——第四次作业
    C语言——第三次作业
    C语言——第二次作业
    C语言——第一次作业
  • 原文地址:https://www.cnblogs.com/key1309/p/3402534.html
Copyright © 2011-2022 走看看