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:
KaedahRangka 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>
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!