首頁 > 資料庫 > mysql教程 > EF Core 如何有效率地對應自引用類別表以進行分層資料檢索?

EF Core 如何有效率地對應自引用類別表以進行分層資料檢索?

Linda Hamilton
發布: 2025-01-03 01:32:39
原創
637 人瀏覽過

How Can EF Core Efficiently Map a Self-Referencing Category Table for Hierarchical Data Retrieval?

將自引用類別表結構對應到EF Core

問題源自於擷取層次結構的複雜性,例如類別表及其ParentId列,在EF Core 和LINQ 的限制內。為了解決這個問題,我們採用了遞歸函數來手動遍歷類別並填入 ChildCategories 屬性。

但是,出現了一種利用EF Core 全部功能的更有效率的解決方案:

使用單一包含

與之前嘗試載入樹的一部分不同Include(),此方法涉及ChildCategories 屬性上的單一Include()。這與將查詢具體化為 LINQ to Objects 上下文結合,允許 EF Core 的導航屬性修復來處理對應。

透過篩選優化檢索

至根據儲存庫的GetAll() 方法的要求,僅檢索類別樹的根節點,在查詢完成後應用過濾器Materialized :

return Table
       .AsEnumerable()
       .Where(x => x.ParentId == null)
       .ToList();
登入後複製

透過使用AsEnumerable() 將查詢具體化到LINQ to Objects在上下文中,可以在應用篩選之前修復導航屬性。這導致單一 SQL 查詢可以有效地檢索所需的層次結構,而不需要遞歸函數。

以上是EF Core 如何有效率地對應自引用類別表以進行分層資料檢索?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板