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(); }