/// <summary> /// Gets the KPI scorecard items of the given type. /// </summary> /// <param name="db">The DB context.</param> /// <param name="itemType">Type of the KPI scorecard.</param> /// <returns>The KPI scorecard items of the given type.</returns> /// <remarks>All exceptions will be propagated.</remarks> private static IList <KPIScorecardItem> GetKPIScorecardItems(DbContext db, KPIScorecardItemType itemType) { return(db.Set <KPIScorecardItem>() .Include(x => x.ServiceLevel) .Include(x => x.Threshold) .Where(x => x.Type == itemType).ToList()); }
/// <summary> /// Updates the scorecard item entities. /// </summary> /// <param name="db">The DB context.</param> /// <param name="updatedItems">The updated items.</param> /// <param name="itemType">Type of the scorecard item.</param> /// <remarks>All exceptions will be propagated.</remarks> private static void UpdateScorecardItemEntities(CustomDbContext db, IList <KPIScorecardItem> updatedItems, KPIScorecardItemType itemType) { if (updatedItems == null) { return; } DbSet <KPIScorecardItem> set = db.Set <KPIScorecardItem>(); IList <KPIScorecardItem> existingItems = set.Include(x => x.ServiceLevel).Include(x => x.Threshold) .Where(x => x.Type == itemType).ToList(); foreach (KPIScorecardItem item in updatedItems) { item.Type = itemType; KPIScorecardItem existing = existingItems.FirstOrDefault(x => x.Id == item.Id); if (existing == null) { // add new entity set.Add(item); } else { // update existing db.Entry(existing).CurrentValues.SetValues(item); existing.ServiceLevel.CopyValuesFrom(item.ServiceLevel); existing.Threshold.CopyValuesFrom(item.Threshold); } } DeleteMissingEntities(set, existingItems, updatedItems); }