| Iot | ||
| .envrc | ||
| .gitignore | ||
| Actor.csv | ||
| ActorType.csv | ||
| flake.lock | ||
| flake.nix | ||
| Iot.sln | ||
| Iot.sln.DotSettings | ||
| Measurement.csv | ||
| MeasurementType.csv | ||
| README.md | ||
"# 10-Iot
Lehrziele
- LINQ to Object
- Navigation Properties
- Wiederholung: Projektion, Join, GroupBy
Aufgabenstellung
In einem IoT Projekt werden Messdaten gesammelt und in einer Datenbank abgespeichert. Von dieser Datenbank sind CSV Exportdateien vorhanden:
Datenstruktur
ActorType.csv
Kategorisierung der Aktoren.
- Id: Eindeutige ID
- Name: Bezeichnung der Aktorkategorie
Actor.csv
Liste aller im System vorhandenen Aktoren.
- Id: Eindeutige ID
- Name: Bezeichnung des Aktors
- FirstSeen: Zeitpunkt der ersten Registrierung
- ActorTypeId: Beziehung zu den Aktoren-Kategorien
MeasurementType.csv
Liste aller Messwert-Kategorien.
- Id: Eindeutige ID
- Name: Bezeichnung (z.B. "Temperature")
- Comment: Kommentar/Beschreibung
Measurement.csv
Liste aller (historischen) Messwerte.
- Id: Eindeutige ID
- Time: Zeitpunkt der Messung
- ActorId: Zuordnung zu einem Aktor
- MeasurementTypeId: Zuordnung zu einer Messwert-Kategorie
- Value: Der gemessene Wert
Implementierung
Entitäten
Das Projekt enthält zwei Arten von Entitäten:
- CsvEntities: Einfache DTOs für den CSV-Import (ohne Beziehungen)
- Entities: Domain-Entitäten mit Navigation Properties
Navigation Properties
Die Entities implementieren folgende Beziehungen:
ActorType→Actors(1:n)Actor→ActorType(n:1)Actor→Measurements(1:n)MeasurementType→Measurements(1:n)Measurement→Actor(n:1)Measurement→MeasurementType(n:1)
LINQ Queries
Das Programm demonstriert verschiedene LINQ-Operationen:
Report 1: Liste aller Aktoren mit Anzahl der Messungen
- Verwendete LINQ-Operationen: Select, Projection, OrderBy
Report 2: Liste aller Messwert-Typen mit Anzahl
- Verwendete LINQ-Operationen: Select, Projection, OrderBy
Report 3: Aktoren nach Messwert-Typen gruppiert mit Statistiken
- Verwendete LINQ-Operationen: GroupBy, Select, Projection, Min, Max, Count, OrderBy
- Zeigt für jede Kombination von Aktor und Messwert-Typ:
- Anzahl der Messungen
- Minimaler Wert
- Maximaler Wert
Ausführung
dotnet run --project Iot/Iot.csproj
"