public async Task Update(AccountModel account) { var existing = await _dbContext.Accounts.Where(a => a.Id == account.Id).ToListAsync(); foreach (Models.Account item in existing) { if (!account.LegalEntityModels.Any(i => i.AccountLegalEntityId == item.AccountLegalEntityId)) { _dbContext.Remove(item); } } foreach (Models.Account item in account.Map()) { var legalEntity = existing.SingleOrDefault(a => a.AccountLegalEntityId == item.AccountLegalEntityId); if (legalEntity == null) { _dbContext.Add(item); } else { legalEntity.LegalEntityName = item.LegalEntityName; legalEntity.HasSignedIncentivesTerms = item.HasSignedIncentivesTerms; legalEntity.SignedAgreementVersion = item.SignedAgreementVersion; legalEntity.VrfCaseId = item.VrfCaseId; legalEntity.VrfCaseStatus = item.VrfCaseStatus; legalEntity.VrfVendorId = item.VrfVendorId; legalEntity.VrfCaseStatusLastUpdatedDateTime = item.VrfCaseStatusLastUpdatedDateTime; legalEntity.HashedLegalEntityId = item.HashedLegalEntityId; } } }