static void Main() { Console.WriteLine("Import der Measurements und Sensors in die Datenbank"); using (UnitOfWork unitOfWorkImport = new UnitOfWork()) { Console.WriteLine("Datenbank löschen"); unitOfWorkImport.DeleteDatabase(); Console.WriteLine("Datenbank migrieren"); unitOfWorkImport.MigrateDatabase(); Console.WriteLine("Messwerte werden von measurements.csv eingelesen"); var measurements = ImportController.ReadFromCsv().ToArray(); if (measurements.Length == 0) { Console.WriteLine("!!! Es wurden keine Messwerte eingelesen"); return; } Console.WriteLine( $" Es wurden {measurements.Count()} Messwerte eingelesen, werden in Datenbank gespeichert ..."); unitOfWorkImport.MeasurementRepository.AddRange(measurements); int countSensors = measurements.GroupBy(m => m.Sensor).Count(); int savedRows = unitOfWorkImport.SaveChanges(); Console.WriteLine( $"{countSensors} Sensoren und {savedRows - countSensors} Messwerte wurden in Datenbank gespeichert!"); Console.WriteLine(); } using (UnitOfWork unitOfWork = new UnitOfWork()) { Console.WriteLine("Import beendet, Test der gespeicherten Daten"); Console.WriteLine("--------------------------------------------"); Console.WriteLine(); var count = unitOfWork .MeasurementRepository .GetCountMeasurementsForSensor("livingroom", "temperature"); Console.WriteLine($"Anzahl Messwerte für Sensor temperature in location livingroom: {count}"); Console.WriteLine(); var greatestmeasurements = unitOfWork .MeasurementRepository .GetLastThreeHighestMeasurements("livingroom", "temperature"); Console.WriteLine("Letzte 3 höchste Temperaturmesswerte im Wohnzimmer"); WriteMeasurements(greatestmeasurements); Console.WriteLine(); var average = unitOfWork .MeasurementRepository .GetValidCo2ValuesInOffice("office", "co2", 300, 5000); Console.WriteLine($"Durchschnitt der gültigen Co2-Werte (>300, <5000) im office: {average}"); Console.WriteLine(); Console.WriteLine("Alle Sensoren mit dem Durchschnitt der Messwerte"); var avgMeasurements = unitOfWork.MeasurementRepository.GetSensorsWithAvgMeasurements(); WriteSensorsWithAvgMeasurements(avgMeasurements); } Console.Write("Beenden mit Eingabetaste ..."); Console.ReadLine(); }
static async System.Threading.Tasks.Task Main() { Console.WriteLine("Import der Measurements und Sensors in die Datenbank"); using (UnitOfWork unitOfWorkImport = new UnitOfWork()) { Console.WriteLine("Datenbank löschen"); unitOfWorkImport.DeleteDatabase(); Console.WriteLine("Datenbank migrieren"); unitOfWorkImport.MigrateDatabase(); Console.WriteLine("Messwerte werden von measurements.csv eingelesen"); var measurements = ImportController.ReadFromCsv().ToArray(); if (measurements.Length == 0) { Console.WriteLine("!!! Es wurden keine Messwerte eingelesen"); return; } Console.WriteLine( $" Es wurden {measurements.Count()} Messwerte eingelesen, werden in Datenbank gespeichert ..."); unitOfWorkImport.MeasurementRepository.AddRange(measurements); int countSensors = measurements.GroupBy(m => m.Sensor).Count(); int savedRows = unitOfWorkImport.SaveChanges(); Console.WriteLine( $"{countSensors} Sensoren und {savedRows - countSensors} Messwerte wurden in Datenbank gespeichert!"); Console.WriteLine(); } using (UnitOfWork unitOfWork = new UnitOfWork()) { Console.WriteLine("Import beendet, Test der gespeicherten Daten"); Console.WriteLine("--------------------------------------------"); Console.WriteLine(); var count = unitOfWork.MeasurementRepository .CountMeasurementsSensor("temperature", "livingroom"); Console.WriteLine($"Anzahl Messwerte für Sensor temperature in location livingroom: {count}"); Console.WriteLine(); var greatestmeasurements = unitOfWork.MeasurementRepository .GetLast3GreatestMeasurements("temperature", "livingroom"); // TODO Console.WriteLine("Letzte 3 höchste Temperaturmesswerte im Wohnzimmer"); WriteMeasurements(greatestmeasurements); Console.WriteLine(); var average = unitOfWork.MeasurementRepository .GetAverageOfValidCo2("office"); Console.WriteLine($"Durchschnitt der gültigen Co2-Werte (>300, <5000) im office: {average}"); Console.WriteLine(); Console.WriteLine("Alle Sensoren mit dem Durchschnitt der Messwerte"); // TODO var results = await unitOfWork.SensorRepository.GetSensorsAverage(); Console.WriteLine("Location Name Value"); for (int i = 0; i < results.Length; i++) { var result = results[i]; Console.WriteLine($"{result.Item1.Location,-20} {result.Item1.Name,-20} {Math.Round(result.Item2,2),4} {result.Item1.Unit}"); } } Console.Write("Beenden mit Eingabetaste ..."); Console.ReadLine(); }