public static void HydrateTraceMeasurements <TMeasurement>(this MeasurementStore store, MeasuredTrace measuredTrace) where TMeasurement : class, IMeasurement { foreach (var mm in store.Set <TMeasurement>().Include(m => m.Trace).Where(m => m.Trace == measuredTrace)) { measuredTrace.AddMeasurement(mm); } }
public static void HydrateTraceMeasurements(this MeasurementStore store, MeasuredTrace measuredTrace) { // TODO Go back to dynamically discovering types rather than using hard coded list. For now this works better with EF // TODO Move filtering to db engine rather than client side. This is super inneficient, but working around EF foreach (var m in store.Set <CpuSampled>().Include(m => m.Trace).Where(m => string.Equals(m.Trace.PackageFileName, measuredTrace.PackageFileName, StringComparison.OrdinalIgnoreCase))) { measuredTrace.AddMeasurement(m); } foreach (var m in store.Set <BootPhase>().Include(m => m.Trace).Where(m => string.Equals(m.Trace.PackageFileName, measuredTrace.PackageFileName, StringComparison.OrdinalIgnoreCase))) { measuredTrace.AddMeasurement(m); } foreach (var m in store.Set <WinlogonSubscriberTask>().Include(m => m.Trace).Where(m => string.Equals(m.Trace.PackageFileName, measuredTrace.PackageFileName, StringComparison.OrdinalIgnoreCase))) { measuredTrace.AddMeasurement(m); } foreach (var m in store.Set <DiskIo>().Include(m => m.Trace).Where(m => string.Equals(m.Trace.PackageFileName, measuredTrace.PackageFileName, StringComparison.OrdinalIgnoreCase))) { measuredTrace.AddMeasurement(m); } foreach (var m in store.Set <LogicalDisk>().Include(m => m.Trace).Where(m => string.Equals(m.Trace.PackageFileName, measuredTrace.PackageFileName, StringComparison.OrdinalIgnoreCase))) { measuredTrace.AddMeasurement(m); } foreach (var m in store.Set <PhysicalDisk>().Include(m => m.Trace).Where(m => string.Equals(m.Trace.PackageFileName, measuredTrace.PackageFileName, StringComparison.OrdinalIgnoreCase))) { measuredTrace.AddMeasurement(m); } foreach (var m in store.Set <TraceAttribute>().Include(m => m.Trace).Where(m => string.Equals(m.Trace.PackageFileName, measuredTrace.PackageFileName, StringComparison.OrdinalIgnoreCase))) { measuredTrace.AddMeasurement(m); } }