public override bool Update(Employee entity) { if (entity.Addresses != null) { var addressIdList = entity.Addresses.Select(c => c.Id); var existingEmployee = FindById(entity.Id); var updateableAddresses = entity.Addresses.Where(c => c.Id > 0); var addeableAddresses = entity.Addresses.Where(c => c.Id == 0); var deleteableAddresses = existingEmployee.Addresses.Where(c => !addressIdList.Contains(c.Id)); if (addeableAddresses != null) { _addressManager.AddOrUpdate(addeableAddresses.ToList()); } if (updateableAddresses != null) { _addressManager.AddOrUpdate(updateableAddresses.ToList()); } } return(_Repository.Update(entity)); }