sql >> Database teknologi >  >> RDS >> Sqlserver

Skrivning af rekursiv CTE ved hjælp af Entity Framework Fluent syntaks eller Inline syntaks

AFAIK er der ingen understøttelse af rekursive CTE'er i LINQ eller i EF. Løsningen er at eksponere CTE som en udsigt. Artiklen om rekursive eller hierarkiske forespørgsler ved hjælp af EF Code First og Migrations viser, hvordan man implementerer en sådan visning ved hjælp af EF-kode første migrationer.

Forsøg på at efterligne CTE'er ved at udføre rekursive gentagelser på klientsiden skalerer ikke til store datasæt og resulterer i en chatty udveksling med serveren. Bemærk, hvordan din EF-kode returnerer IEnumerable ikke IQueryable , betyder det, at det materialiserer hvert niveau og derefter sammenkæder det næste niveau for hver post som en separat anmodning . Den LINQ-baserede løsning vil fungere rimeligt for overfladiske hierarkier med begrænset antal indgange (og bemærk, at mange projekter kan har et sådant datalayout, hvor brugerindlæg/svar er et typisk eksempel), men vil smuldre under dybe hierarkier med mange elementer.



  1. Husk dette, når du formaterer en TIME-datatype i SQL Server (T-SQL)

  2. Hvornår skal jeg bruge MySQLi i stedet for MySQL?

  3. SQLite Opret tabel

  4. Hvad er logisk ELLER-operatør i SQL Server - SQL Server / TSQL Tutorial Del 119