public async Task EditTattoo(Tattoo tattoo, string description, IEnumerable <int> styleIds, int albumId) { var stylesToRemove = tattoo.TattooStyles.Where(x => !styleIds.Contains(x.StyleId)).ToList(); if (stylesToRemove.Count != 0) { await _tattooStyleRepository.DeleteRange(stylesToRemove); foreach (var styleToRemove in stylesToRemove) { tattoo.TattooStyles.Remove(styleToRemove); } } tattoo.Description = description; foreach (var id in styleIds) { if (!tattoo.TattooStyles.Any(ts => ts.StyleId == id)) { tattoo.TattooStyles.Add(new TattooStyle() { Tattoo = tattoo, StyleId = id }); } } tattoo.AlbumId = albumId != 0 ? albumId : (int?)null; await _tattooRepository.UpdateAsync(tattoo); }