Rumah > pangkalan data > tutorial mysql > Bagaimanakah Teras EF Boleh Memetakan Jadual Kategori Rujukan Sendiri dengan Cekap untuk Pengambilan Data Hierarki?

Bagaimanakah Teras EF Boleh Memetakan Jadual Kategori Rujukan Sendiri dengan Cekap untuk Pengambilan Data Hierarki?

Linda Hamilton
Lepaskan: 2025-01-03 01:32:39
asal
637 orang telah melayarinya

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

Memetakan Struktur Jadual Kategori Rujukan Kendiri kepada Teras EF

Masalah timbul daripada kerumitan mendapatkan semula struktur hierarki, seperti kategori jadual dengan lajur ParentIdnya, dalam had EF Core dan LINQ. Untuk menangani perkara ini, fungsi rekursif telah digunakan untuk melintasi kategori secara manual dan mengisi sifat ChildCategories.

Walau bagaimanapun, penyelesaian yang lebih cekap yang memanfaatkan keupayaan penuh EF Core telah muncul:

Menggunakan a Single Include

Tidak seperti percubaan sebelumnya untuk muatkan sebahagian daripada pokok dengan Include(), pendekatan ini melibatkan satu Include() pada sifat ChildCategories. Ini, digabungkan dengan pewujudan pertanyaan ke dalam konteks LINQ ke Objek, membenarkan penetapan sifat navigasi EF Core untuk mengendalikan pemetaan.

Pendapatan Dioptimumkan dengan Penapisan

Kepada dapatkan hanya nod akar pokok kategori, seperti yang diperlukan oleh kaedah GetAll() repositori, penapis digunakan selepas pertanyaan diwujudkan:

return Table
       .AsEnumerable()
       .Where(x => x.ParentId == null)
       .ToList();
Salin selepas log masuk

Dengan mewujudkan pertanyaan ke dalam konteks LINQ ke Objek menggunakan AsEnumerable(), sifat navigasi ditetapkan sebelum penapisan digunakan. Ini menghasilkan satu pertanyaan SQL yang berkesan mendapatkan semula struktur hierarki yang dikehendaki tanpa memerlukan fungsi rekursif.

Atas ialah kandungan terperinci Bagaimanakah Teras EF Boleh Memetakan Jadual Kategori Rujukan Sendiri dengan Cekap untuk Pengambilan Data Hierarki?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan