Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah saya dapat mengambil bas dan penumpang mereka dengan cekap dalam rangka entiti?

Bagaimanakah saya dapat mengambil bas dan penumpang mereka dengan cekap dalam rangka entiti?

Linda Hamilton
Lepaskan: 2025-02-01 13:36:11
asal
509 orang telah melayarinya

dengan cekap mengambil bas dan terjaga penumpang dalam rangka entiti

Artikel ini menangani cabaran untuk mendapatkan semula bas dan penumpang mereka menggunakan Rangka Kerja Entiti (EF) dengan cara yang cekap, meminimumkan panggilan pangkalan data. Penyelesaiannya berbeza sedikit bergantung pada versi EF anda.

How Can I Efficiently Retrieve Buses and Their Awake Passengers in Entity Framework?

versi teras ef sebelum 5: Versi EF yang lebih lama memerlukan penyelesaian untuk mencapai hasil yang diinginkan:

  1. Lumpuhkan Lazy Loading:

    Matikan pemuatan malas () untuk mengelakkan hits pangkalan data yang tidak perlu apabila mengakses entiti yang berkaitan. Context.Configuration.LazyLoadingEnabled = false;

  2. pertanyaan unjuran:

    Gunakan pertanyaan unjuran untuk memilih hanya data yang diperlukan:

<code class="language-csharp">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();</code>
Salin selepas log masuk
  1. Fixup Perhubungan (Automatik):

    Fixup Hubungan EF secara automatik akan menyambungkan yang dipilih ke bas masing -masing dalam ingatan. AwakePassengers

    Pemetaan dengan automapper (pilihan):
  2. Gunakan automapper (atau perpustakaan yang sama) untuk memetakan data yang diambil ke DTOS anda.
  3. Pertimbangan penting (pra-EF Core 5):

Melumpuhkan pemuatan malas memberi kesan kepada bahagian lain aplikasi anda. Pertimbangkan trade-off. banyak hubungan yang mungkin memerlukan tugasan penumpang manual selepas unjuran.

  • ef core 5 dan kemudian:
  • ef core 5 dan versi kemudian menawarkan penyelesaian yang lebih elegan menggunakan
:

pertanyaan tunggal ini dengan cekap mengambil bas dan hanya penumpang mereka yang terjaga, menghapuskan keperluan untuk penyelesaian dalam versi terdahulu. Pemetaan langsung ke DTOS menggunakan automapper kemudian boleh digunakan.

Pendekatan yang lebih baik ini dalam EF Core 5 menyediakan kaedah yang lebih bersih dan lebih cekap untuk mendapatkan entiti yang berkaitan dengan penapisan, dengan ketara memudahkan proses. IncludeWith(...)

Atas ialah kandungan terperinci Bagaimanakah saya dapat mengambil bas dan penumpang mereka dengan cekap dalam rangka entiti?. 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