78 lines
2.1 KiB
Markdown
78 lines
2.1 KiB
Markdown
"# 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:
|
|
|
|
1. **CsvEntities**: Einfache DTOs für den CSV-Import (ohne Beziehungen)
|
|
2. **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
|
|
```bash
|
|
dotnet run --project Iot/Iot.csproj
|
|
```
|
|
"
|
|
|