public void DeleteTrack(string trackTitle) { using (var db = new DecibaseContext()) { var track = db.Tracks.First(t => t.Title == trackTitle); var albumTitle = GetTrackAlbum(trackTitle); var album = db.Albums.Include(a => a.Tracks).First(a => a.Title == albumTitle); var artistNames = RetrieveTrackArtistNames(trackTitle); foreach (var artistName in artistNames) { UnjoinTrackFromArtist(trackTitle, artistName); } db.Remove(track); db.SaveChanges(); if (album.Tracks.Count == 0) { db.Remove(album); SelectedAlbum = ""; } db.SaveChanges(); } SelectedTrack = ""; }
public void UnjoinTrackFromArtist(string trackTitle, string artistName) { using (var db = new DecibaseContext()) { var track = db.Tracks.First(t => t.Title == trackTitle); var artist = db.Artists.First(a => a.Name == artistName); if (db.TrackArtists.FirstOrDefault(ta => ta.TrackId == track.TrackId && ta.ArtistId == artist.ArtistId) != null) { var ta = db.TrackArtists.First(ta => ta.TrackId == track.TrackId && ta.ArtistId == artist.ArtistId); db.Remove(ta); db.SaveChanges(); if (RetrieveArtistTrackTitles(artistName).Count == 0) { db.Remove(artist); if (SelectedArtist == artist.Name) { SelectedArtist = ""; } } } } }
public void DeleteAlbum(string albumTitle) { using (var db = new DecibaseContext()) { var albumTracks = RetrieveAlbumTrackTitles(albumTitle); foreach (var track in albumTracks) { DeleteTrack(track); } if (albumTracks.Count == 0) { var album = db.Albums.First(a => a.Title == albumTitle); db.Remove(album); db.SaveChanges(); } } SelectedAlbum = ""; }
public void DeleteArtist(string artistName) { using (var db = new DecibaseContext()) { var artistTracks = RetrieveArtistTrackTitles(artistName); foreach (var track in artistTracks) { DeleteTrack(track); } if (artistTracks.Count == 0) { var artist = db.Artists.First(a => a.Name == artistName); db.Remove(artist); db.SaveChanges(); if (SelectedArtist == artist.Name) { SelectedArtist = ""; } } } }