c# entity-framework many-to-many dbcontext

c# - Eliminando muchas a muchas entidades Framework



entity-framework many-to-many (1)

La forma estándar es cargar el artista, incluidos los tipos relacionados actuales de la base de datos y luego eliminar los tipos con los identificadores seleccionados de la colección de tipos cargados. El seguimiento de cambios reconocerá qué tipos se han eliminado y escribirá las instrucciones DELETE correctas en la tabla de unión:

var artist = this._db.Artists.Include(a => a.ArtistTypes) .SingleOrDefault(a => a.ArtistID == someArtistID); if (artist != null) { foreach (var artistType in artist.ArtistTypes .Where(at => vm.SelectedIds.Contains(at.ArtistTypeID)).ToList()) { artist.ArtistTypes.Remove(artistType); } this._db.SaveChanges(); }

Hay una relación de muchos a muchos entre Artist y ArtistType . Puedo agregar fácilmente artista ArtistType como abajo

foreach (var artistType in this._db.ArtistTypes .Where(artistType => vm.SelectedIds.Contains(artistType.ArtistTypeID))) { artist.ArtistTypes.Add(artistType); } _db.ArtistDetails.Add(artist); _db.SaveChanges();

Esto va y actualiza la tabla de asociación muchos a muchos con la asignación correcta. ¿Pero cuando intento eliminar cualquier elemento de la tabla, no aparece ningún error pero no lo elimina de la tabla?

foreach (var artistType in this._db.ArtistTypes .Where(at => vm.SelectedIds.Contains(at.ArtistTypeID))) { artistDetail.ArtistTypes.Remove(artistType); } this._db.Entry(artistDetail).State = EntityState.Modified; this._db.SaveChanges();

¿Qué me estoy perdiendo?