首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> 關於ASP.NET

Entity Framework 進階學習(二):改善 EF 程式碼效能(下)

     編輯:關於ASP.NET

本篇介紹三項提升 Entity Framework 效能的關鍵技巧:編譯查詢、存儲模型視圖與並發衝突處理。

CompiledQuery:查詢編譯與快取重用

當相同查詢需重複執行多次(如迴圈、高頻 API),使用 CompiledQuery.Compile 將 LINQ 查詢編譯為委派,避免重複解析表達式樹,顯著降低 CPU 開銷。

範例程式碼

[Test]
public void CompileTest() {
  using (var db = new NorthwindEntities1()) {
    // 編譯查詢:取得倫敦地區客戶
    var customer = CompiledQuery.Compile<NorthwindEntities1, IQueryable<Customers>>(
      db => db.Customers.Where(c => c.City == "London"));

    // 連續執行 20 次並計時
    for (int i = 0; i < 20; i++) {
      DateTime dt = DateTime.Now;
      foreach (var c in customer(db))
        Console.WriteLine(c.CustomerID);
      Console.WriteLine(DateTime.Now.Subtract(dt).TotalMilliseconds);
      Console.WriteLine("---------------------------------------------------");
    }
  }
}

首次呼叫會編譯並快取,後續呼叫直接重用編譯後的委派,效能提升明顯。

存儲模型視圖

透過定義對應資料庫 View 的實體型別,將複雜聯結、聚合邏輯下推至資料庫層,減少資料傳輸量與客戶端運算。

並發衝突處理

EF 支援樂觀並發控制,透過 ConcurrencyMode 屬性與 OptimisticConcurrencyException 捕捉衝突,結合 RefreshMode 實現「保留本地變更」或「覆寫為資料庫值」等策略,確保資料一致性。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved