ClassicSidebar Layout

DataGrid – IQueryable & Mapping

Echtes EF Core + SQLite + AutoMapper Szenario: DbContext.Mitarbeiter wird per ProjectTo<MitarbeiterDto>() gemappt. Kein .ToList() vor der Übergabe – das DataGrid bekommt ein IQueryable<MitarbeiterDto> direkt aus der DB. 2.000.000 Datensätze, Sortierung und Paging laufen über EF Core / SQLite.

IQueryable mit Paging (2.000.000 Einträge, PageSize 20)

QueryableItems – Sortierung + Paging über IQueryable
Nr.
Name
Abteilung
Eintrittsdatum
Gehalt (€)
1Müller AndreasEntwicklung08.04.20132.973,00
2Wagner SabineMarketing15.07.20143.146,00
3Schneider ThomasVertrieb22.10.20153.319,00
4Fischer LauraHR01.01.20163.492,00
5Weber MarkusFinanzen08.04.20173.665,00
6Becker JuliaEinkauf15.07.20183.838,00
7Hoffmann StefanProduktion22.10.20192.961,00
8Koch AnnaIT-Betrieb01.01.20203.134,00
9Bauer PeterEntwicklung08.04.20213.307,00
10Richter ClaudiaMarketing15.07.20223.480,00
11Klein MartinVertrieb22.10.20233.653,00
12Wolf SandraHR01.01.20123.826,00
13Schröder MichaelFinanzen08.04.20133.999,00
14Neumann KatharinaEinkauf15.07.20143.122,00
15Schwarz FrankProduktion22.10.20153.295,00
16Zimmermann MonikaIT-Betrieb01.01.20163.468,00
17Braun BerndEntwicklung08.04.20173.641,00
18Krüger ChristineMarketing15.07.20183.814,00
19Hofmann JürgenVertrieb22.10.20193.987,00
20Hartmann NicoleHR01.01.20204.160,00
1 von 100000 Seiten (2000000 Einträge)

Sub-Entity-Mapping: e.Beschaeftigung.Name → Statusname

Statusname direkt aus verschachtelter Entity gemappt – Badge per CellTemplate
Nr.
Name
Abteilung
Status
Gehalt (€)
1Müller AndreasEntwicklungAktiv2.973,00
2Wagner SabineMarketingElternzeit3.146,00
3Schneider ThomasVertriebKrank3.319,00
4Fischer LauraHRProbezeit3.492,00
5Weber MarkusFinanzenGekündigt3.665,00
6Becker JuliaEinkaufAktiv3.838,00
7Hoffmann StefanProduktionElternzeit2.961,00
8Koch AnnaIT-BetriebKrank3.134,00
9Bauer PeterEntwicklungProbezeit3.307,00
10Richter ClaudiaMarketingGekündigt3.480,00
1 von 200000 Seiten (2000000 Einträge)

Gefilterte IQueryable-Teilmenge (nur Abteilung "Entwicklung")

Zeigt wie ein .Where() vor der Übergabe funktioniert – simuliert Server-seitiges Filtern
Nr.
Name
Gehalt (€)
1Müller Andreas2.973,00
9Bauer Peter3.307,00
17Braun Bernd3.641,00
25Krause Hans3.975,00
33Schneider Thomas4.309,00
41Klein Martin4.643,00
49Hofmann Jürgen3.927,00
57Lehmann Klaus4.261,00
65Weber Markus4.595,00
73Schröder Michael4.929,00
1 von 25000 Seiten (250000 Einträge)

Suchperformance – 2.000.000 Einträge (voller Datensatz)

Suche läuft direkt über IQueryable auf dem vollständigen Datensatz – kein .Take()
Nr.
Name
Abteilung
Status
Gehalt (€)
1Müller AndreasEntwicklungAktiv2.973,00
2Wagner SabineMarketingElternzeit3.146,00
3Schneider ThomasVertriebKrank3.319,00
4Fischer LauraHRProbezeit3.492,00
5Weber MarkusFinanzenGekündigt3.665,00
6Becker JuliaEinkaufAktiv3.838,00
7Hoffmann StefanProduktionElternzeit2.961,00
8Koch AnnaIT-BetriebKrank3.134,00
9Bauer PeterEntwicklungProbezeit3.307,00
10Richter ClaudiaMarketingGekündigt3.480,00
1 von 200000 Seiten (2000000 Einträge)

Suchperformance – 200.000 Einträge (.Take(200_000))

Suche läuft direkt über IQueryable auf 200.000 Datensätzen
Nr.
Name
Abteilung
Status
Gehalt (€)
1Müller AndreasEntwicklungAktiv2.973,00
2Wagner SabineMarketingElternzeit3.146,00
3Schneider ThomasVertriebKrank3.319,00
4Fischer LauraHRProbezeit3.492,00
5Weber MarkusFinanzenGekündigt3.665,00
6Becker JuliaEinkaufAktiv3.838,00
7Hoffmann StefanProduktionElternzeit2.961,00
8Koch AnnaIT-BetriebKrank3.134,00
9Bauer PeterEntwicklungProbezeit3.307,00
10Richter ClaudiaMarketingGekündigt3.480,00
1 von 20000 Seiten (200000 Einträge)

Suchperformance – 20.000 Einträge (.Take(20_000))

Suche läuft direkt über IQueryable auf 20.000 Datensätzen
Nr.
Name
Abteilung
Status
Gehalt (€)
1Müller AndreasEntwicklungAktiv2.973,00
2Wagner SabineMarketingElternzeit3.146,00
3Schneider ThomasVertriebKrank3.319,00
4Fischer LauraHRProbezeit3.492,00
5Weber MarkusFinanzenGekündigt3.665,00
6Becker JuliaEinkaufAktiv3.838,00
7Hoffmann StefanProduktionElternzeit2.961,00
8Koch AnnaIT-BetriebKrank3.134,00
9Bauer PeterEntwicklungProbezeit3.307,00
10Richter ClaudiaMarketingGekündigt3.480,00
1 von 2000 Seiten (20000 Einträge)

Suchperformance – 2.000 Einträge (.Take(2_000))

Suche läuft direkt über IQueryable auf 2.000 Datensätzen
Nr.
Name
Abteilung
Status
Gehalt (€)
1Müller AndreasEntwicklungAktiv2.973,00
2Wagner SabineMarketingElternzeit3.146,00
3Schneider ThomasVertriebKrank3.319,00
4Fischer LauraHRProbezeit3.492,00
5Weber MarkusFinanzenGekündigt3.665,00
6Becker JuliaEinkaufAktiv3.838,00
7Hoffmann StefanProduktionElternzeit2.961,00
8Koch AnnaIT-BetriebKrank3.134,00
9Bauer PeterEntwicklungProbezeit3.307,00
10Richter ClaudiaMarketingGekündigt3.480,00
1 von 200 Seiten (2000 Einträge)

Suchperformance – 200 Einträge (.Take(200))

Suche läuft direkt über IQueryable auf nur 200 Datensätzen – Referenzwert für minimale Last
Nr.
Name
Abteilung
Status
Gehalt (€)
1Müller AndreasEntwicklungAktiv2.973,00
2Wagner SabineMarketingElternzeit3.146,00
3Schneider ThomasVertriebKrank3.319,00
4Fischer LauraHRProbezeit3.492,00
5Weber MarkusFinanzenGekündigt3.665,00
6Becker JuliaEinkaufAktiv3.838,00
7Hoffmann StefanProduktionElternzeit2.961,00
8Koch AnnaIT-BetriebKrank3.134,00
9Bauer PeterEntwicklungProbezeit3.307,00
10Richter ClaudiaMarketingGekündigt3.480,00
1 von 20 Seiten (200 Einträge)

Rejoining the server...

Rejoin failed... trying again in seconds.

Failed to rejoin.
Please retry or reload the page.

The session has been paused by the server.

Failed to resume the session.
Please retry or reload the page.