AFAIK tidak ada dukungan untuk CTE rekursif di LINQ atau di EF. Solusinya adalah mengekspos CTE sebagai tampilan. Artikel tentang kueri Rekursif atau hierarkis menggunakan EF Code First dan Migrasi menunjukkan cara menerapkan tampilan seperti itu menggunakan migrasi kode EF pertama.
Mencoba untuk meniru CTE dengan melakukan iterasi sisi klien rekursif tidak menskalakan ke kumpulan data yang besar dan menghasilkan pertukaran yang cerewet dengan server. Perhatikan bagaimana kode EF Anda mengembalikan IEnumerable
bukan IQueryable
, itu berarti ia mewujudkan setiap level dan kemudian menggabungkan level berikutnya untuk setiap entri sebagai permintaan terpisah . Solusi berbasis LINQ akan bekerja secara wajar untuk hierarki dangkal dengan jumlah entri terbatas (dan perhatikan bahwa banyak proyek dapat memiliki tata letak data seperti itu, posting/jawaban pengguna menjadi contoh tipikal), tetapi akan runtuh di bawah hierarki yang dalam dengan banyak elemen.