Ok, saya memiliki entitas bertingkat tiga dengan hierarki berikut: Kursus -> Modul -> Bab
Inilah pernyataan EF LINQ asli:
Course course = db.Courses
.Include(i => i.Modules.Select(s => s.Chapters))
.Single(x => x.Id == id);
Sekarang, saya ingin memasukkan entitas lain bernama Lab yang dikaitkan dengan kursus.
Bagaimana cara saya memasukkan entitas Lab?
Saya mencoba yang berikut tetapi tidak berhasil:
Course course = db.Courses
.Include(i => i.Modules.Select(s => s.Chapters) && i.Lab)
.Single(x => x.Id == id);
Adakah ide untuk memasukkan Entitas Kedua?
Setiap saran atau informasi akan sangat dihargai. Terima kasih!
.Include
harus berfungsi kecuali jika Anda bermaksud bahwa penambahan tambahan adalah cucu Kursus. Lihat ini atau opsi yang lebih baik adalah iniJawaban:
Sudahkah Anda mencoba menambahkan yang lain
Include
:Solusi Anda gagal karena
Include
tidak menggunakan operator booleanPerbarui Untuk mempelajari lebih lanjut, unduh LinqPad dan lihat sampel. Saya pikir ini adalah cara tercepat untuk mengenal Linq dan Lambda.
Sebagai permulaan - perbedaan antara
Select
danInclude
adalah bahwa dengan Pilih Anda memutuskan apa yang ingin Anda kembalikan (alias proyeksi). Sertakan adalah fungsi Eager Loading , yang memberi tahu Kerangka Entity bahwa Anda ingin menyertakan data dari tabel lain.Sintaks Sertakan juga bisa dalam string. Seperti ini:
Tetapi sampel di LinqPad menjelaskan ini dengan lebih baik.
sumber
.Include("Module.Chapter")
. Adakah yang tahu mengapa hal itu terjadi?System.Data.Enity
untuk mengakses metode ekstensi. info lebih lanjut di siniusing System.Data.Entity;
melakukannya. Terima kasih!Di Entity Framework Core (
EF.core
) Anda bisa menggunakan.ThenInclude
untuk memasukkan level selanjutnya.Informasi lebih lanjut: https://docs.microsoft.com/en-us/ef/core/querying/related-data
Catatan: Katakanlah Anda perlu beberapa
ThenInclude()
diblog.Posts
, hanya mengulangInclude(blog => blog.Posts)
dan melakukan yang lainThenInclude(post => post.Other)
.sumber
ThenInclude
inti EF. Mungkin membuat pertanyaan dengan contoh yang baik, sehingga kita bisa menjawabnya.Include
adalah bagian dari antarmuka yang lancar, sehingga Anda dapat menulis beberapaInclude
pernyataan satu sama lain berikutsumber
Anda juga bisa mencoba
sumber
Seseorang dapat menulis metode ekstensi seperti ini:
Dan gunakan seperti ini bahkan dalam implementasi generik:
sumber
Include