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
Lepaskan: 2025-01-25 06:01:11
asal
865 orang telah melayarinya

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk
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!

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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan