Example #1
0
        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());
        }