Olá, Bruno!
Pelo que você descreveu, parece que o erro está ocorrendo porque o sistema está tentando criar um novo registro com uma tag que já existe no banco de dados, o que está gerando uma violação de chave.
Em um relacionamento ManyToMany no .Net, quando você tenta associar uma entidade existente a uma nova, é necessário garantir que a entidade existente não seja recriada. Para isso, você deve buscar a entidade existente no banco de dados e, em seguida, adicionar essa entidade ao novo objeto que está sendo criado.
Por exemplo, se você tem uma entidade "Tag" e uma entidade "Materia", e está tentando associar uma "Tag" existente a uma nova "Materia", você deve fazer algo assim:
var tagExistente = _context.Tags.Find(idTagExistente);
var novaMateria = new Materia { /* inicialize a nova matéria aqui */ };
novaMateria.Tags.Add(tagExistente);
_context.Materias.Add(novaMateria);
_context.SaveChanges();
Dessa forma, você está adicionando a tag existente à nova matéria, e não criando uma nova tag.
Lembre-se, este é um exemplo genérico e pode precisar ser ajustado para se adequar ao seu código específico.
Espero ter ajudado e bons estudos!