private async Task FillCache(IEnumerable <int> entities, string associationType) { var missing = entities.Except(_cache.Where(e => e.Value.Associations.ContainsKey(associationType)) .Select(e => e.Key)) .ToList(); if (missing.Count == 0) { return; } Calls++; foreach (var association in await CaptureTime(() => _graph.GetAssociations(missing, associationType))) { _cache.Get(association.From).Associations.Get(associationType).Add(association); } }
protected override async Task <IReadOnlyCollection <IReadOnlyList <Association> > > GetItems(IEnumerable <int> ids) { var all = await _source.GetAssociations(ids, _type); return(all.GroupBy(a => a.From).Select(a => a.ToList()).ToList()); }