sql >> Database >  >> RDS >> Sqlserver

Recursieve CTE schrijven met behulp van Entity Framework Fluent-syntaxis of Inline-syntaxis

AFAIK er is geen ondersteuning voor recursieve CTE's in LINQ noch in EF. De oplossing is om de CTE als een weergave te tonen. Het artikel over recursieve of hiërarchische zoekopdrachten met EF Code First en Migraties laat zien hoe u een dergelijke weergave kunt implementeren met EF code first-migraties.

Pogingen om CTE's te emuleren door recursieve client-side iteraties uit te voeren, schaalt niet naar grote datasets en resulteert in een spraakzame uitwisseling met de server. Merk op hoe uw EF-code IEnumerable retourneert niet IQueryable , betekent dit dat het elk niveau materialiseert en vervolgens het volgende niveau voor elk item samenvoegt als een afzonderlijk verzoek . De op LINQ gebaseerde oplossing zal redelijk werken voor ondiepe hiërarchieën met een beperkt aantal aanmeldingen (en merk op dat veel projecten kunnen hebben zo'n gegevenslay-out, gebruikersposten/antwoorden zijn een typisch voorbeeld), maar zullen afbrokkelen onder diepe hiërarchieën met veel elementen.



  1. pgmemcache instellen en gebruiken

  2. Is er een prestatiehit met behulp van decimale gegevenstypen (MySQL / Postgres)

  3. Volledige foutmeldingen ophalen in isql

  4. MySQL SQRT() Functie – Retourneer de vierkantswortel van een getal in MySQL