Example #1
0
        void UpdateHeroes()
        {
            using var scope = serviceScopeFactory.CreateScope();
            var dataManager = scope.ServiceProvider.GetRequiredService <DataManager>();

            var heroesLocal  = dataManager.Heroes.ToDictionary(k => k.Id);
            var heroesRemote = steam.GetHeroes().heroes.Select(x => new Hero
            {
                Id   = x.id,
                Name = x.localized_name
            }).ToDictionary(k => k.Id);

            // добавляем Unknown Hero для поддержки связи с матчами, которые не были сыграны
            heroesRemote[0] = new Hero {
                Id = 0, Name = "Unknown Hero"
            };

            foreach (var heroRemoteKey in heroesRemote.Keys)
            {
                var hero = heroesRemote[heroRemoteKey];

                if (heroesLocal.ContainsKey(heroRemoteKey))
                {
                    heroesLocal[heroRemoteKey].Name = hero.Name;
                }
                else
                {
                    dataManager.Heroes.Add(hero);
                }
            }

            dataManager.SaveChanges();

            CacheHeroes();
        }