Mengoptimumkan pertanyaan EF: Penapisan entiti yang berkaitan dengan termasuk
Artikel ini menangani cabaran untuk mendapatkan entiti berkaitan dengan efisien dengan klausa dalam pertanyaan Rangka Kerja Entiti (EF). Matlamatnya adalah untuk mengelakkan pelbagai perjalanan pangkalan data. Where
dan Bus
, dengan Person
mempunyai harta navigasi koleksi untuk Bus
. Objektifnya adalah untuk mengambil semua bas yang memandu, bersama -sama dengan hanya penumpang yang terjaga. Person
yang ditapis dalam pertanyaan. Where
Context.Configuration.LazyLoadingEnabled = false; var buses = Context.Busses.Where(b => b.IsDriving) .Select(b => new { Bus = b, AwakePassengers = b.Passengers.Where(p => p.Awake) }) .AsEnumerable() .Select(x => x.Bus) .ToList();
menghasilkan hasil memori, yang membolehkan EF untuk mewujudkan hubungan dengan betul. Akhirnya, hanya objek AsEnumerable()
dipilih dan dikembalikan. Bus
Pertimbangan penting:
Kaedah ini, sementara berkesan dalam EF6, mungkin memerlukan pelarasan untuk banyak hubungan dan dalam teras EF. EF Core menawarkan ciri -ciri seperti penapis pertanyaan global yang dapat menyediakan penyelesaian alternatif untuk senario yang lebih kompleks. Untuk maklumat terperinci mengenai teknik canggih ini dan mengendalikan banyak hubungan yang banyak, sila rujuk sumber asal.Atas ialah kandungan terperinci Bagaimanakah saya dapat memasukkan entiti yang berkaitan dengan klausa di mana dalam pertanyaan EF?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!