Adición de elemento con relación de muchos a muchos en Entity Framewo

Recibo un error de violación de clave principal cuando intento agregar un elemento con una relación de muchos a muchos:

Tengo dos clases: artículos y etiquetas que tienen una relación de muchos a muchos:

public class Article
{
    public int ID { get; set; }
    public string Text { get; set; }
    public   ICollection<Tag>  Tags { get; set; }
}

public class Tag
{ 
    [Key]
    public string UrlSlug { get; set; }
    public string Name { get; set; }
    public ICollection<Article> Articles{ get; set; }
}

Cuando agrego un nuevo artículo, permito que el usuario ingrese cualquier etiqueta y luego quiero crear una nueva etiqueta si la etiqueta aún no está creada en la base de datos o agregar la etiqueta a la colección de etiquetas del objeto del artículo si la etiqueta ya existe

Por lo tanto, cuando estoy creando el nuevo objeto Artículo llamo a la siguiente función:

public static Tag GetOrLoadTag(String tagStr)
        {
            string tagUrl = Tag.CreateTagUrl(tagStr);
            var db = new SnippetContext();
            var tagFromDb = from tagdummy in db.Tags.Include(x => x.Articles)
                            where tagdummy.UrlSlug == tagUrl
                            select tagdummy;
            if (tagFromDb.FirstOrDefault() != null)
            { return tagFromDb.FirstOrDefault(); }
            else
            {
                //create and send back a new Tag
            }

        }

Esta función básicamente verifica si hay una etiqueta disponible en la base de datos y, en caso afirmativo, devuelve esa etiqueta que luego se agrega a la colección de etiquetas del objeto Article mediante article.Tags.Add ().

Sin embargo, cuando intento guardar esto usando el siguiente código, aparece un error de violación de PRIMARY KEY

 db.Entry(article).State = EntityState.Modified;
 db.SaveChanges();

No puedo entender cómo debo simplemente crear una relación entre el Artículo y la Etiqueta ya existente.

Respuestas a la pregunta(2)

Su respuesta a la pregunta