public void FirstPhase(DatabaseWrapper conn) { CompareData(conn.GetDimTrackers().ToDictionary(x => x.GetKeyValue(), x => x), api.GetDimTrackers().ToDictionary(x => x.GetKeyValue(), x => x), conn.Insert, conn.Delete); CompareData(conn.GetRules().ToDictionary(x => x.GetKeyValue(), x => x), api.GetRules().ToDictionary(x => x.GetKeyValue(), x => x), conn.Insert, conn.Delete); CompareData(conn.GetZones().ToDictionary(x => x.GetKeyValue(), x => x), api.GetZones().ToDictionary(x => x.GetKeyValue(), x => x), conn.Insert, conn.Delete); Dictionary <string, DimTracker> trackers = conn.GetDimTrackers().ToDictionary(x => x.GetKeyValue(), x => x); Dictionary <string, FactTracker> dbFactTrackers = conn.GetFactTrackers().ToDictionary(x => x.GetKeyValue(), x => x);; List <FactTracker> sensolusFactTrackers = api.GetFactTrackers(trackers); List <FactTracker> toAdd = new List <FactTracker>(); foreach (var fact in sensolusFactTrackers) { if (!dbFactTrackers.ContainsKey(fact.GetKeyValue())) { toAdd.Add(fact); } } conn.Insert(toAdd); }