private List <Actor> SaveNewActors(MovieViewModel movieVm, List <Actor> newActors, IEnumerable <Actor> currentMovieActors) { var newCheckedActors = new List <Actor>(); newCheckedActors = movieVm.MovieActors?.Where(x => !currentMovieActors.Any(y => y.Id == x.Id))?.ToList(); if (!newActors.Any() && !newCheckedActors.Any()) { return(new List <Actor>()); } var newActorsCount = newActors.Count; var savedRecords = 0; try { savedRecords = _actorDbService.AddBatch(newActors); if (newActors.Count != savedRecords) { throw new Exception(); } newActors = newActors.Concat(newCheckedActors).ToList(); } catch (Exception ex) { if (newActorsCount != savedRecords) { throw new Exception($"Failed to save {newActors.Count - savedRecords} actors information"); } throw new Exception("Failed to save actor information"); } return(newActors); }