91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2021-09-18 09:46:11 來源:億速云 閱讀:146 作者:柒染 欄目:編程語言

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

異步查詢 

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

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

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

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

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


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

{

        using (var context = new BloggingContext())

        {

                return await context.Blogs.ToListAsync();

        }

}

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

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

查詢的工作原理

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

    A:查詢到的數據會被緩存,以便每次執行相同數據查詢時耗費性能。

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

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

調用 LINQ 運算符時,只會構建查詢在內存中的表示形式。只有在使用結果時,查詢才會發送到數據庫。

導致查詢發送到數據庫的最常見操作如下:

  • 在 for 或者 foreach 循環中循環訪問結果

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

  • 將查詢結果數據綁定到 UI 界面時。

查詢注釋標記

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

1

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

看完上述內容,你們掌握EFCORE中異步查詢和工作原理以及注釋標記的示例分析的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

天长市| 灌南县| 仁布县| 陆川县| 台东市| 平利县| 两当县| 阳曲县| 榆树市| 怀柔区| 武邑县| 鄂尔多斯市| 杂多县| 兴宁市| 内黄县| 抚顺市| 吐鲁番市| 巴南区| 保康县| 深州市| 桑日县| 桑植县| 民勤县| 敖汉旗| 仙居县| 巴彦县| 舟山市| 吉林市| 桐城市| 台中县| 武隆县| 谷城县| 霍州市| 久治县| 当阳市| 廊坊市| 康定县| 调兵山市| 霍林郭勒市| 平陆县| 筠连县|