真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

EFCORE中異步查詢和工作原理以及注釋標(biāo)記的示例分析

EFCORE中異步查詢和工作原理以及注釋標(biāo)記的示例分析,相信很多沒有經(jīng)驗(yàn)的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個(gè)問題。

創(chuàng)新互聯(lián)建站堅(jiān)實(shí)的技術(shù)研發(fā)基礎(chǔ)贏得了行業(yè)內(nèi)的良好口碑,公司成立10余年來,為上千企業(yè)提供過網(wǎng)站建設(shè)、軟件開發(fā)、搜索引擎優(yōu)化技術(shù)、互聯(lián)網(wǎng)大數(shù)據(jù)整合營銷服務(wù),多年的技術(shù)服務(wù)成功經(jīng)驗(yàn)、眾多的客戶使我們能懂得更多,做得更好。"讓您的網(wǎng)站跑起來"是我們一直追求的目標(biāo)!

異步查詢 

當(dāng)在遠(yuǎn)程數(shù)據(jù)庫中執(zhí)行查詢時(shí),同步查詢可能會(huì)阻止當(dāng)前線程,異步查詢可避免阻止線程,這有助于避免凍結(jié)戶端界面, 異步操作還可以增加 Web 應(yīng)用程序的吞吐量,可以在數(shù)據(jù)庫操作完成前釋放線程去處理其他請求。

 EF Core 不支持在同一上下文實(shí)例上運(yùn)行多個(gè)并行操作。 應(yīng)始終等待操作完成,然后再開始下一個(gè)操作。 這通常是通過在每個(gè)異步操作上使用 await 關(guān)鍵字完成的。 

Entity Framework Core 提供了一組異步擴(kuò)展方法,可用于執(zhí)行異步查詢。例如:

ToListAsync()、ToArrayAsync()、SingleAsync() ,如果看到 Async 結(jié)尾,一般都是異步方法,這也是微軟的命名約定,希望您也遵守。 

對于部分 LINQ 運(yùn)算符(如 Where(...)、OrderBy(...) 等),沒有對應(yīng)的異步版本,因?yàn)檫@些方法僅用于構(gòu)建 LINQ 表達(dá)式樹,而未將查詢發(fā)送到數(shù)據(jù)庫中執(zhí)行,只有用到結(jié)果時(shí)才會(huì)去數(shù)據(jù)庫查詢,這是 IQueryable 天生的特性,之前我們講過。


public async Task> GetBlogsAsync()

{

        using (var context = new BloggingContext())

        {

                return await context.Blogs.ToListAsync();

        }

}

EFCORE中異步查詢和工作原理以及注釋標(biāo)記的示例分析

 異步編程  

查詢的工作原理

  1. 查詢編寫的所由表達(dá)式由 EF Core 處理,根據(jù)不同的數(shù)據(jù)庫提供程序生成與 LINQ 等效的 SQL 語句。

    A:查詢到的數(shù)據(jù)會(huì)被緩存,以便每次執(zhí)行相同數(shù)據(jù)查詢時(shí)耗費(fèi)性能。

  2. 查詢表達(dá)式會(huì)傳遞到數(shù)據(jù)庫提供程序
    A:提供程序會(huì)識(shí)別出查詢的哪些部分可以在數(shù)據(jù)庫中求值進(jìn)行,哪些只能在客戶端進(jìn)行,哪些根本就沒辦法進(jìn)行。
    B:對于能進(jìn)行數(shù)據(jù)庫查詢的操作,生成對應(yīng)的 SQL 語句。
    C:一個(gè)或多個(gè)查詢會(huì)被發(fā)送到數(shù)據(jù)庫并返回結(jié)果集。這里返回的不是實(shí)體對象集合,而是數(shù)據(jù)集。

  3. 對于結(jié)果集中的每一項(xiàng)
    A:如果是跟蹤查詢(默認(rèn)跟蹤),EF 會(huì)檢查數(shù)據(jù)項(xiàng)是已存在于跟蹤器中。如果是,則返回現(xiàn)有實(shí)體,如果不是,則創(chuàng)建實(shí)體,并將實(shí)體添加到跟蹤器中。
    B:如果這個(gè)查詢是非跟蹤查詢,EF 會(huì)檢查數(shù)據(jù)是否表示此查詢結(jié)果集中的現(xiàn)有實(shí)體,如果是,則會(huì)返回現(xiàn)有實(shí)體 ,如果不是,則會(huì)創(chuàng)建新實(shí)體并返回該新實(shí)體。 

調(diào)用 LINQ 運(yùn)算符時(shí),只會(huì)構(gòu)建查詢在內(nèi)存中的表示形式。只有在使用結(jié)果時(shí),查詢才會(huì)發(fā)送到數(shù)據(jù)庫。

導(dǎo)致查詢發(fā)送到數(shù)據(jù)庫的最常見操作如下:

  • 在 for 或者 foreach 循環(huán)中循環(huán)訪問結(jié)果

  • 使用 ToList、ToArray、Single、Count 等操作

  • 將查詢結(jié)果數(shù)據(jù)綁定到 UI 界面時(shí)。

查詢注釋標(biāo)記

使用 TagWith() 方法對 LINQ 生成的 SQL 語句進(jìn)行注釋,方便閱讀。

1

context.Friends.TagWith("This is my spatial query!")

看完上述內(nèi)容,你們掌握EFCORE中異步查詢和工作原理以及注釋標(biāo)記的示例分析的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!


分享題目:EFCORE中異步查詢和工作原理以及注釋標(biāo)記的示例分析
文章位置:http://weahome.cn/article/piccpg.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部