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.