我們來說一下Iqueryable集合和List等本地集合的區別,下麵我們通過建立一個簡單的例子來學習這個知識點,直接進入主題吧 1.首先對比一下兩段代碼?看一下有什麼結果: (1) 第一段代碼如圖所示: (2)第一段代碼使用資料庫的Profiler查看執行結果: (3)第二段代碼如圖所示: (4) ...
我們來說一下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都是本地集合,都是緩存在裡面的
(3) 使用EF管理上下文實例的最佳選擇是線程的唯一。
(4) IEnumable和IQueryable一樣都是延遲載入,IEnumable針對的是本地數據,記憶體中的,IQueryable針對的是遠程數據,比如資料庫