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();
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!