Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk memuatkan entiti berkaitan dengan klausa di mana dalam kerangka entiti?

Bagaimana untuk memuatkan entiti berkaitan dengan klausa di mana dalam kerangka entiti?

Susan Sarandon
Lepaskan: 2025-02-01 13:46:08
asal
967 orang telah melayarinya

How to Eagerly Load Related Entities with a Where Clause in Entity Framework?

Memuatkan data berkaitan dengan penapisan dalam rangka entiti

Artikel ini menangani cabaran entiti berkaitan dengan bersemangat semasa memohon syarat penapisan dalam rangka entiti. Pendekatan yang optimum bergantung pada versi EF anda.

Rangka Kerja Entiti 6 Penyelesaian

EF6 bergantung pada pemuatan dan hubungan yang bersemangat. Walau bagaimanapun, mekanisme pembaikan ini tidak selalu berfungsi dengan betul dengan banyak hubungan. Penyelesaian melibatkan:

  1. Melumpuhkan pemuatan malas: Mencegah pemuatan malas untuk memastikan semua data diambil dalam satu pertanyaan:

    Context.Configuration.LazyLoadingEnabled = false;
    Salin selepas log masuk
  2. unjuran dengan penapisan: Gunakan unjuran untuk menapis entiti yang berkaitan semasa pertanyaan:

    var buses = Context.Busses
                        .Where(b => b.IsDriving)
                        .Select(x => new { b, Passengers = x.Passengers.Where(p => p.Awake) })
                        .AsEnumerable()
                        .Select(x => x.b)
                        .ToList();
    Salin selepas log masuk
  3. Fixup Hubungan Automatik: EF secara automatik akan mengisi harta setiap objek Passengers dengan hanya penumpang yang terjaga. Bus

  4. Objek Pemindahan Data (DTOS): Gunakan alat pemetaan seperti automapper untuk menukar data yang diambil ke DTOS untuk pemindahan data optimum.

Rangka Kerja Entiti (5.0 dan kemudian) Penyelesaian

EF CORE 5.0 dan kemudian versi sokongan langsung bersarang termasuk di mana klausa, memudahkan proses:

var buses = Context.Busses
                    .Include(bus => bus.Passengers.Where(p => p.Awake))
                    .ToList();
Salin selepas log masuk

Pendekatan alternatif: Perpustakaan pihak ketiga

Perpustakaan seperti

menawarkan kaedah yang lebih efisien untuk menguruskan penapis global yang terpakai untuk memasukkan koleksi. Ini dapat meningkatkan kebolehbacaan dan kebolehkerjaan kod untuk senario kompleks. EntityFramework.DynamicFilters

Ringkasan

Pendekatan terbaik untuk memuatkan data berkaitan dengan penapisan dalam rangka kerja entiti pada versi yang digunakan. EF CORE 5.0 menawarkan penyelesaian mudah. Bagi EF6, penyelesaian yang melibatkan melumpuhkan pemuatan malas dan menggunakan unjuran diperlukan. Perpustakaan pihak ketiga menyediakan alternatif untuk organisasi dan fleksibiliti kod yang lebih baik.

Atas ialah kandungan terperinci Bagaimana untuk memuatkan entiti berkaitan dengan klausa di mana dalam kerangka entiti?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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