Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Menulis CTE Rekursif menggunakan sintaks Entity Framework Fluent atau sintaks Inline

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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sisipkan beberapa baris TANPA mengulangi bagian INSERT INTO ... dari pernyataan?

  2. Masukkan semua nilai tabel ke tabel lain di SQL

  3. Perbarui kolom hitungan dari data di tabel lain

  4. Apa itu Operator Logis ATAU di SQL Server - Tutorial SQL Server / TSQL Bagian 119

  5. Hasil SQL dinamis menjadi tabel temp dalam prosedur SQL Stored