Rumah >pembangunan bahagian belakang >C++ >Bolehkah Kaedah `Include()` Rangka Kerja Entiti Mengendalikan Pelbagai Tahap Hartanah Bersarang?

Bolehkah Kaedah `Include()` Rangka Kerja Entiti Mengendalikan Pelbagai Tahap Hartanah Bersarang?

DDD
DDDasal
2025-01-25 06:01:11872semak imbas

Can Entity Framework's `Include()` Method Handle Multiple Levels of Nested Properties?

Pemuatan atribut berbilang peringkat Rangka Kerja Entiti

Kaedah Include() Rangka Kerja Entiti boleh pramuat entiti berkaitan dengan cekap, tetapi bolehkah ia mengendalikan berbilang peringkat sifat bersarang (seperti koleksi bersarang yang mengandungi objek kompleks)?

Pelaksanaan dan pengehadan sedia ada

Kod sampel menunjukkan bahawa kaedah Include() boleh memuatkan sifat peringkat pertama. Pertanyaan seperti berikut:

<code class="language-csharp">public IEnumerable<applicationserver> GetAll()
{
    return this.Database.ApplicationServers
        .Include(x => x.ApplicationsWithOverrideGroup)
        .Include(x => x.ApplicationWithGroupToForceInstallList)
        .Include(x => x.CustomVariableGroups)
        .ToList();
}</code>

akan mendapatkan semula ApplicationsWithOverrideGroup objek yang mengandungi sifat ApplicationServer, yang mengandungi koleksi ApplicationWithOverrideVariableGroup objek. Walau bagaimanapun, sifat ApplicationWithOverrideVariableGroup dan Application dalam koleksi CustomVariableGroup tidak akan diisi.

Penyelesaian untuk Sertakan bersarang berbilang peringkat

Bergantung pada versi Rangka Kerja Entiti yang digunakan, sifat berbilang peringkat boleh dipramuat menggunakan kaedah berikut:

Rangka Kerja Entiti 6:

Kaedah

Rangka Kerja Entiti 6 menerima ungkapan lambda. Dengan menggunakan ungkapan lambda bersarang, anda boleh menentukan berbilang tahap kemasukan: Include()

<code class="language-csharp">var query = this.Database.ApplicationServers
    .Include(x => x.ApplicationsWithOverrideGroup
        .Select(y => y.Application))
    .Include(x => x.ApplicationsWithOverrideGroup
        .Select(y => y.CustomVariableGroup));</code>

Teras Rangka Kerja Entiti:

Teras Rangka Kerja Entiti memperkenalkan kaedah

, membenarkan lata termasuk. Kaedah ini digunakan selepas ThenInclude() awal untuk menentukan kemasukan yang lebih mendalam: Include()

<code class="language-csharp">var query = this.Database.ApplicationServers
    .Include(x => x.ApplicationsWithOverrideGroup)
    .ThenInclude(y => y.Application)
    .ThenInclude(y => y.CustomVariableGroup);</code>
Melalui kaedah ini, anda boleh pramuat sifat berbilang peringkat dalam Rangka Kerja Entiti, memastikan koleksi objek yang kompleks diisi sepenuhnya selepas pengambilan semula.

Atas ialah kandungan terperinci Bolehkah Kaedah `Include()` Rangka Kerja Entiti Mengendalikan Pelbagai Tahap Hartanah Bersarang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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