У меня есть API на базе EF Core 5, и я работаю с отношениями «многие ко многим» (таблицы «Исполнители» и «Релизы»).
Пост-экшен работает нормально даже несмотря на то, что, например, для художника я решил не добавлять возможность отправлять гайды уже существующих релизов, а только полные объекты релизов, которые будут созданы одновременно.
Итак, как мне связать исполнителей с уже существующими релизами? Я пытаюсь сделать это внутри действия put, отправив внутрь artistD to releaseDto список только конкурирующих Guids.
Это прекрасно работает для добавления новых отношений, соединительная таблица ArtistRelease действительно обновляется, НО Guids, которые я не указываю, не удаляются, я не могу удалить отношения, за исключением случаев, когда я удаляю исполнителя или релиз.
Итак, мой вопрос: как я могу удалить отношения?
Можете ли вы оказать мне некоторую помощь, пожалуйста?
var releases = Repository.Release.GetReleases(artistForUpdateDto.Releases, trackChanges: false);
if (releases.Count() != artistForUpdateDto.Releases.Count())
{
Logger.LogInfo($"Some release ids are not valid in the ArtistForUpdateDto object");
return NotFound();
}
Mapper.Map(artistForUpdateDto, artist);
artist.Releases = releases.ToList();
Repository.Save();
Я нашел решение, мне просто нужно было получить исполнителя с помощью «include», чтобы получить его релизы.
RepositoryContext.Set<T>().Where(expression).Include(includeExpression)
Если я сохраню исполнителя с пустым списком, таблица соединений будет обновлена :)