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?