Entity Framework第三篇IQueryable和list本地集合


  在上一篇博客中我們大致學習了EF框架的增刪改查的功能,這篇我們主要來說一下Iqueryable集合和List等本地集合的區別,下面我們通過建立一個簡單的例子來學習這個知識點,直接進入主題吧

1.首先對比一下兩段代碼?看一下有什么結果:

  (1) 第一段代碼如圖所示:

    

  (2)第一段代碼使用數據庫的Profiler查看執行結果:  

    

  (3)第二段代碼如圖所示:

    

  (4) 第一段代碼使用數據庫的Profiler查看執行結果:

    

2.IQueryable

  (1) IQueryable表達式分為三個項,第一個是查詢數據的表達式,第二個是元素類型,第三個是:查詢數據Provider,每次我們需要取出集合里面的數據的話,Provider都回去解析查詢數據的表達式,解析完之后再去數據庫將數據取出來,傳遞給集合使用

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

  (1) 本地類型的存儲數據就像是往箱子里面塞東西,你想往里面放就放,然后當我們使用的時候,直接遍歷一下拿出來就行了,而IQeurable是你使用數據的時候先讓Provider解析查詢數據的表達式,,然后去響應的地方去查詢數據。而List等已經在本地存放了,你只需要拿出來使用就行了

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

  

5.知識點總結

  (1) 解決查詢多次的問題,因IQueryable延遲加載,當用到集合的時候,provider會解析表達式,然后生成查詢,所以會走一個復雜的過程。

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

  (3) 使用EF管理上下文實例的最佳選擇是線程的唯一。

  (4) IEnumerable接口是一個公開枚舉器,該枚舉器支持在指定的集合上進行簡單迭代,也就是次接口可以直接使用foreach遍歷次Object。具體的分析見上面。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM