日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

【EFCORE笔记】异步查询工作原理注释标记

發(fā)布時間:2023/12/4 54 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【EFCORE笔记】异步查询工作原理注释标记 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

異步查詢?

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

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

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

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

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


public?async Task<List<Blog>> GetBlogsAsync()

{

????????using?(var?context =?new?BloggingContext())

????????{

????????????????return?await context.Blogs.ToListAsync();

????????}

}

  

?異步編程?<https://docs.microsoft.com/zh-cn/dotnet/csharp/async>?

查詢的工作原理

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

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

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

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

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

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

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

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

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

    查詢注釋標記

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

    1

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

    總結(jié)

    以上是生活随笔為你收集整理的【EFCORE笔记】异步查询工作原理注释标记的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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