public static void InitCache() { string t = "AnimeGroups_User"; ServerState.Instance.CurrentSetupStatus = string.Format(JMMServer.Properties.Resources.Database_Cache, t, string.Empty); AnimeGroup_UserRepository repo = new AnimeGroup_UserRepository(); Cache = new PocoCache <int, AnimeGroup_User>(repo.InternalGetAll(), a => a.AnimeGroup_UserID); Groups = Cache.CreateIndex(a => a.AnimeGroupID); Users = Cache.CreateIndex(a => a.JMMUserID); UsersGroups = Cache.CreateIndex(a => a.JMMUserID, a => a.AnimeGroupID); foreach (int n in Cache.Values.Select(a => a.JMMUserID).Distinct()) { Changes[n] = new ChangeTracker <int>(); Changes[n].AddOrUpdateRange(Users.GetMultiple(n).Select(a => a.AnimeGroupID)); } int cnt = 0; List <AnimeGroup_User> grps = Cache.Values.Where(a => a.PlexContractVersion < AnimeGroup_User.PLEXCONTRACT_VERSION).ToList(); int max = grps.Count; foreach (AnimeGroup_User g in grps) { repo.Save(g); cnt++; if (cnt % 10 == 0) { ServerState.Instance.CurrentSetupStatus = string.Format(JMMServer.Properties.Resources.Database_Cache, t, " DbRegen - " + cnt + "/" + max); } } ServerState.Instance.CurrentSetupStatus = string.Format(JMMServer.Properties.Resources.Database_Cache, t, " DbRegen - " + max + "/" + max); }