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 (€) |
|---|---|---|---|---|
| 1 | Müller Andreas | Entwicklung | 08.04.2013 | 2.973,00 |
| 2 | Wagner Sabine | Marketing | 15.07.2014 | 3.146,00 |
| 3 | Schneider Thomas | Vertrieb | 22.10.2015 | 3.319,00 |
| 4 | Fischer Laura | HR | 01.01.2016 | 3.492,00 |
| 5 | Weber Markus | Finanzen | 08.04.2017 | 3.665,00 |
| 6 | Becker Julia | Einkauf | 15.07.2018 | 3.838,00 |
| 7 | Hoffmann Stefan | Produktion | 22.10.2019 | 2.961,00 |
| 8 | Koch Anna | IT-Betrieb | 01.01.2020 | 3.134,00 |
| 9 | Bauer Peter | Entwicklung | 08.04.2021 | 3.307,00 |
| 10 | Richter Claudia | Marketing | 15.07.2022 | 3.480,00 |
| 11 | Klein Martin | Vertrieb | 22.10.2023 | 3.653,00 |
| 12 | Wolf Sandra | HR | 01.01.2012 | 3.826,00 |
| 13 | Schröder Michael | Finanzen | 08.04.2013 | 3.999,00 |
| 14 | Neumann Katharina | Einkauf | 15.07.2014 | 3.122,00 |
| 15 | Schwarz Frank | Produktion | 22.10.2015 | 3.295,00 |
| 16 | Zimmermann Monika | IT-Betrieb | 01.01.2016 | 3.468,00 |
| 17 | Braun Bernd | Entwicklung | 08.04.2017 | 3.641,00 |
| 18 | Krüger Christine | Marketing | 15.07.2018 | 3.814,00 |
| 19 | Hofmann Jürgen | Vertrieb | 22.10.2019 | 3.987,00 |
| 20 | Hartmann Nicole | HR | 01.01.2020 | 4.160,00 |
Sub-Entity-Mapping: e.Beschaeftigung.Name → Statusname
Statusname direkt aus verschachtelter Entity gemappt – Badge per CellTemplate
Nr. | Name | Abteilung | Status | Gehalt (€) |
|---|---|---|---|---|
| 1 | Müller Andreas | Entwicklung | Aktiv | 2.973,00 |
| 2 | Wagner Sabine | Marketing | Elternzeit | 3.146,00 |
| 3 | Schneider Thomas | Vertrieb | Krank | 3.319,00 |
| 4 | Fischer Laura | HR | Probezeit | 3.492,00 |
| 5 | Weber Markus | Finanzen | Gekündigt | 3.665,00 |
| 6 | Becker Julia | Einkauf | Aktiv | 3.838,00 |
| 7 | Hoffmann Stefan | Produktion | Elternzeit | 2.961,00 |
| 8 | Koch Anna | IT-Betrieb | Krank | 3.134,00 |
| 9 | Bauer Peter | Entwicklung | Probezeit | 3.307,00 |
| 10 | Richter Claudia | Marketing | Gekündigt | 3.480,00 |
Gefilterte IQueryable-Teilmenge (nur Abteilung "Entwicklung")
Zeigt wie ein .Where() vor der Übergabe funktioniert – simuliert Server-seitiges Filtern
Nr. | Name | Gehalt (€) |
|---|---|---|
| 1 | Müller Andreas | 2.973,00 |
| 9 | Bauer Peter | 3.307,00 |
| 17 | Braun Bernd | 3.641,00 |
| 25 | Krause Hans | 3.975,00 |
| 33 | Schneider Thomas | 4.309,00 |
| 41 | Klein Martin | 4.643,00 |
| 49 | Hofmann Jürgen | 3.927,00 |
| 57 | Lehmann Klaus | 4.261,00 |
| 65 | Weber Markus | 4.595,00 |
| 73 | Schröder Michael | 4.929,00 |
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 (€) |
|---|---|---|---|---|
| 1 | Müller Andreas | Entwicklung | Aktiv | 2.973,00 |
| 2 | Wagner Sabine | Marketing | Elternzeit | 3.146,00 |
| 3 | Schneider Thomas | Vertrieb | Krank | 3.319,00 |
| 4 | Fischer Laura | HR | Probezeit | 3.492,00 |
| 5 | Weber Markus | Finanzen | Gekündigt | 3.665,00 |
| 6 | Becker Julia | Einkauf | Aktiv | 3.838,00 |
| 7 | Hoffmann Stefan | Produktion | Elternzeit | 2.961,00 |
| 8 | Koch Anna | IT-Betrieb | Krank | 3.134,00 |
| 9 | Bauer Peter | Entwicklung | Probezeit | 3.307,00 |
| 10 | Richter Claudia | Marketing | Gekündigt | 3.480,00 |
Suchperformance – 200.000 Einträge (.Take(200_000))
Suche läuft direkt über IQueryable auf 200.000 Datensätzen
Nr. | Name | Abteilung | Status | Gehalt (€) |
|---|---|---|---|---|
| 1 | Müller Andreas | Entwicklung | Aktiv | 2.973,00 |
| 2 | Wagner Sabine | Marketing | Elternzeit | 3.146,00 |
| 3 | Schneider Thomas | Vertrieb | Krank | 3.319,00 |
| 4 | Fischer Laura | HR | Probezeit | 3.492,00 |
| 5 | Weber Markus | Finanzen | Gekündigt | 3.665,00 |
| 6 | Becker Julia | Einkauf | Aktiv | 3.838,00 |
| 7 | Hoffmann Stefan | Produktion | Elternzeit | 2.961,00 |
| 8 | Koch Anna | IT-Betrieb | Krank | 3.134,00 |
| 9 | Bauer Peter | Entwicklung | Probezeit | 3.307,00 |
| 10 | Richter Claudia | Marketing | Gekündigt | 3.480,00 |
Suchperformance – 20.000 Einträge (.Take(20_000))
Suche läuft direkt über IQueryable auf 20.000 Datensätzen
Nr. | Name | Abteilung | Status | Gehalt (€) |
|---|---|---|---|---|
| 1 | Müller Andreas | Entwicklung | Aktiv | 2.973,00 |
| 2 | Wagner Sabine | Marketing | Elternzeit | 3.146,00 |
| 3 | Schneider Thomas | Vertrieb | Krank | 3.319,00 |
| 4 | Fischer Laura | HR | Probezeit | 3.492,00 |
| 5 | Weber Markus | Finanzen | Gekündigt | 3.665,00 |
| 6 | Becker Julia | Einkauf | Aktiv | 3.838,00 |
| 7 | Hoffmann Stefan | Produktion | Elternzeit | 2.961,00 |
| 8 | Koch Anna | IT-Betrieb | Krank | 3.134,00 |
| 9 | Bauer Peter | Entwicklung | Probezeit | 3.307,00 |
| 10 | Richter Claudia | Marketing | Gekündigt | 3.480,00 |
Suchperformance – 2.000 Einträge (.Take(2_000))
Suche läuft direkt über IQueryable auf 2.000 Datensätzen
Nr. | Name | Abteilung | Status | Gehalt (€) |
|---|---|---|---|---|
| 1 | Müller Andreas | Entwicklung | Aktiv | 2.973,00 |
| 2 | Wagner Sabine | Marketing | Elternzeit | 3.146,00 |
| 3 | Schneider Thomas | Vertrieb | Krank | 3.319,00 |
| 4 | Fischer Laura | HR | Probezeit | 3.492,00 |
| 5 | Weber Markus | Finanzen | Gekündigt | 3.665,00 |
| 6 | Becker Julia | Einkauf | Aktiv | 3.838,00 |
| 7 | Hoffmann Stefan | Produktion | Elternzeit | 2.961,00 |
| 8 | Koch Anna | IT-Betrieb | Krank | 3.134,00 |
| 9 | Bauer Peter | Entwicklung | Probezeit | 3.307,00 |
| 10 | Richter Claudia | Marketing | Gekündigt | 3.480,00 |
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 (€) |
|---|---|---|---|---|
| 1 | Müller Andreas | Entwicklung | Aktiv | 2.973,00 |
| 2 | Wagner Sabine | Marketing | Elternzeit | 3.146,00 |
| 3 | Schneider Thomas | Vertrieb | Krank | 3.319,00 |
| 4 | Fischer Laura | HR | Probezeit | 3.492,00 |
| 5 | Weber Markus | Finanzen | Gekündigt | 3.665,00 |
| 6 | Becker Julia | Einkauf | Aktiv | 3.838,00 |
| 7 | Hoffmann Stefan | Produktion | Elternzeit | 2.961,00 |
| 8 | Koch Anna | IT-Betrieb | Krank | 3.134,00 |
| 9 | Bauer Peter | Entwicklung | Probezeit | 3.307,00 |
| 10 | Richter Claudia | Marketing | Gekündigt | 3.480,00 |