private void UpdateRecipeTags(Recipe originalRecipe, RecipeUpdateDTO updatedRecipe) { List <Guid> tagsToRemoveGuids = new List <Guid>(); List <Guid> tagsToAddGuids = new List <Guid>(); if (updatedRecipe.Tags != null) { updatedRecipe.Tags.ForEach(t => { if (!_recipesRepository.ContainsTag(updatedRecipe.Id, t.Id)) { tagsToAddGuids.Add(t.Id); } }); } if (originalRecipe.RecipeTags != null && updatedRecipe.Tags != null) { originalRecipe.RecipeTags.ForEach(rt => { if (!updatedRecipe.Tags.Any(t => t.Id == rt.TagId)) { tagsToRemoveGuids.Add(rt.TagId); } }); } tagsToRemoveGuids.ForEach(g => _recipesRepository.RemoveTagById(g)); tagsToAddGuids.ForEach(g => _recipesRepository.AddTag( new RecipeTag { Id = Guid.NewGuid(), TagId = g, RecipeId = updatedRecipe.Id })); }