private void UpdatePaymentStatus(IIncludableQueryable <Member, ICollection <Change> > members, QParaOptions options, ILogger log) { this.ChangeTracker.AutoDetectChangesEnabled = false; var selectedMembers = members .Where(x => x.SubscriptionPeriod != SubscriptionPeriod.Life && (x.SubscriptionType == SubscriptionType.Standard || x.SubscriptionType == SubscriptionType.Concession)) ; var notSelectedMembers = members.Except(selectedMembers).Where(x => !x.GetIsPaid(options) /*!x.IsPaid*/); foreach (var m in notSelectedMembers.ToArray()) { if (m.AmountDue != 0 || m.AmountReceived != 0) { m.AmountDue = m.AmountReceived = 0; log.Information($"{m.FirstName} {m.LastName} due and received amounts reset (to 0)"); //SaveChanges(); } } var subscriptionYear = options.GetSubscriptionYear(DateTimeOffset.UtcNow); foreach (var m in selectedMembers.ToArray()) { m.UpdatePaymentRecords(options, true); //SaveChanges(); } ChangeTracker.DetectChanges(); SaveChanges(); this.ChangeTracker.AutoDetectChangesEnabled = true; }