sql >> Databasteknik >  >> RDS >> Sqlserver

Skriva rekursiv CTE med Entity Framework Fluent syntax eller Inline-syntax

AFAIK finns det inget stöd för rekursiva CTEs i LINQ eller i EF. Lösningen är att exponera CTE som en vy. Artikeln om rekursiva eller hierarkiska frågor med EF Code First och Migrations visar hur man distribuerar en sådan vy med EF-kod första migrering.

Att försöka efterlikna CTE:er genom att göra rekursiva iterationer på klientsidan skalas inte till stora datamängder och resulterar i ett chatty utbyte med servern. Notera hur din EF-kod returnerar IEnumerable inte IQueryable , betyder det att det materialiserar varje nivå och sedan sammanfogar nästa nivå för varje post som en separat begäran . Den LINQ-baserade lösningen kommer att fungera rimligt för grunda hierarkier med begränsat antal anmälningar (och observera att många projekt kan har sådan datalayout, användarinlägg/svar är ett typiskt exempel), men kommer att falla sönder under djupa hierarkier med många element.



  1. De tre främsta anledningarna till att folk flyttar till SaaS

  2. MySQL-replikering och GTID-baserad failover - en djupdykning i felaktiga transaktioner

  3. Ändra en postgres containers serverport i Docker Compose

  4. Skickar xml-strängparameter till SQL Server-lagrad procedur