private Dictionary <string, List <CustomTiming> > LoadCustomTimings(Guid timingId) { var customTimingPocos = CustomTimings .Find(Query <CustomTimingPoco> .EQ(poco => poco.TimingId, timingId)) .ToList(); return(customTimingPocos .GroupBy(poco => poco.Key) .ToDictionary(grp => grp.Key, grp => grp.OrderBy(poco => poco.StartMilliseconds) .Select(CustomTimingPocoToCustomTiming).ToList())); }
/// <summary> /// Returns the <see cref="CustomTiming"/> list keyed to the <paramref name="category"/>, creating any collections when null. /// </summary> /// <param name="category">The kind of custom timings, e.g. "sql", "redis", "memcache"</param> private List <CustomTiming> GetCustomTimingList(string category) { if (CustomTimings == null) { CustomTimings = new Dictionary <string, List <CustomTiming> >(); } List <CustomTiming> result; lock (CustomTimings) { if (!CustomTimings.TryGetValue(category, out result)) { result = new List <CustomTiming>(); CustomTimings[category] = result; } } return(result); }
private void SaveCustomTimings(Timing timing, KeyValuePair <string, List <CustomTiming> > customTimingsKV) { var key = customTimingsKV.Key; var value = customTimingsKV.Value; foreach (var customTiming in value) { var customTimingPoco = new CustomTimingPoco { Id = customTiming.Id, Key = key, TimingId = timing.Id, CommandString = customTiming.CommandString, ExecuteType = customTiming.ExecuteType, StackTraceSnippet = customTiming.StackTraceSnippet, StartMilliseconds = customTiming.StartMilliseconds, DurationMilliseconds = customTiming.DurationMilliseconds, FirstFetchDurationMilliseconds = customTiming.FirstFetchDurationMilliseconds }; CustomTimings.Insert(customTimingPoco); } }