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不同,也就是对表达式树的解析方式不同

  • 相关阅读:
    技术一定要动手做一遍才算自已的
    终于提离职了,感觉如释重负
    自我评定与学习计划
    MYSQL---INSERT...SELECT...
    MYSQL---LIMIT
    SQL---having
    MYSQL---数据定义
    CSS---Block和inline元素对比
    CSS---清除浮动
    T-SQL---分页语句
  • 原文地址:https://www.cnblogs.com/key1309/p/3402534.html
Copyright © 2011-2022 走看看