日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

第二篇 Entity Framework Plus 之 Query Future

發(fā)布時(shí)間:2023/12/4 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 第二篇 Entity Framework Plus 之 Query Future 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

從性能的角度出發(fā),能夠減少 增,刪,改,查,跟數(shù)據(jù)庫打交道次數(shù),肯定是對(duì)性能會(huì)有所提升的(這里單純是數(shù)據(jù)庫部分)。

?今天主要怎樣減少Entity Framework查詢跟數(shù)據(jù)庫打交道的次數(shù),來提高查詢性能。

?舉一個(gè)大家最常用功能 “分頁” 功能。先貼一段代碼。


這類型的代碼,大家估計(jì)都看到過,也自己寫過,簡(jiǎn)單分析一下。

?orders.Count() 返回int 類型,肯定要查詢出數(shù)據(jù)庫才知道訂單總筆數(shù)。

?pagerOrders.ToList() 返回??IEnumerable<T> 類型,這個(gè)不用解釋Entity Framework ?IEnumerable 和 IQueryable?區(qū)別是

?IEnumerable 會(huì)執(zhí)行SQL,IQueryable 而不會(huì)。所以這句也會(huì)去數(shù)據(jù)庫查詢一次。

那整個(gè)分頁功能用Entity Framework 就是最少要兩次數(shù)據(jù)庫查詢,剛剛上面說了,一個(gè)基本的提高性能方法就要減少與數(shù)據(jù)庫打交道次數(shù)。

從“分頁”功能來說,要是變成只有一次與數(shù)據(jù)庫打交道,那就是對(duì)性能有大提升。Entity Framework 自身是沒有提供這樣的方法。

? ? Entity Framework Plus 庫 Query Future 擴(kuò)展,是一個(gè)對(duì)Entity Framework 功能的延伸和擴(kuò)展,能夠做到減少數(shù)據(jù)庫打交道次數(shù)。使查詢性能更高。

?一 . Entity Framework Plus 庫 Query Future 安裝

1. ?解決方案 還是我上一篇?第一篇 Entity Framework Plus 之 Audit?用的解決方案“EntityFrameworkPlusSolution”,新增 “EntityFrameworkPlus.QueryFuture.Demo” 控制臺(tái)項(xiàng)目,作為Entity Framework Plus 庫 Query Future 擴(kuò)展 應(yīng)用和展示功能項(xiàng)目。項(xiàng)目結(jié)構(gòu)截圖如下

?

項(xiàng)目關(guān)系圖 (代碼圖)

2. 為了方便Demo,新增商品業(yè)務(wù) 相關(guān)的 Model,Mapping,以及改動(dòng)DbContext 如下代碼

GoodsModel


GoodsMap


EntityFrameworkPlusDbContext?


3. 右鍵?“EntityFrameworkPlus.QueryFuture.Demo” 項(xiàng)目,選擇“管理NuGet程序包”,關(guān)聯(lián)部分 ?右上角搜索“Z.EntityFramework.Plus” ,然后選擇 “EntityFramework Plus (EF6) | Query Deferred”&“EntityFramework Plus (EF6) | Query Futurn” 兩項(xiàng)安裝

二.?Entity Framework Plus ?庫?Query Future 擴(kuò)展功能實(shí)作

1. 在 “EntityFrameworkPlus.QueryFuture.Demo” 項(xiàng)目 Program 新增3個(gè)靜態(tài)方法,分別是?

FindOrdersWithGoodsies() ?查詢訂單信息和商品信息

FindPagerOrders(int pageSize, int pageIndex, out int totalCount) ?訂單分頁查詢

FindGoodsMaxWithMinUnitPrice()?查詢單價(jià)最大和最小的商品

詳細(xì)代碼如下


2. ?3個(gè)方法的SQL追蹤和截圖

FindOrdersWithGoodsies


FindPagerOrders(int pageSize, int pageIndex, out int totalCount)

FindGoodsMaxWithMinUnitPrice()


至此比較常用到場(chǎng)景,就已經(jīng)實(shí)作完成,大家看到截圖和SQL說明都是一次執(zhí)行,其他大家可以根據(jù)?EntityFramework Plus?源代碼和文檔(不過是英文,但是基本能夠看懂),進(jìn)行更加深入的了解,了解實(shí)現(xiàn)原理,我這里還是拋磚引玉一下。

這篇博文的源代碼:https://github.com/haibozhou1011/EntityFramework-PlusSample

相關(guān)文章

  • 第一篇 Entity Framework Plus 之 Audit

  • Entity Framework教程(第二版)

原文地址:http://www.cnblogs.com/davidzhou/p/5376598.html


.NET社區(qū)新聞,深度好文,微信中搜索dotNET跨平臺(tái)或掃描二維碼關(guān)注

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)

總結(jié)

以上是生活随笔為你收集整理的第二篇 Entity Framework Plus 之 Query Future的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。