/// <summary> /// Diese Methode löscht einen Titel aus der Datenbank.Sollte kein weiterer Titel mit dem Album verknüpft sein, /// so wird auch das Album gelöscht.Sollte kein weiterer Titel mit den Interpret verknüpft sein, so wird auch der Interpret gelöscht. /// Sollte ein gültiger Dateiname mi dem Titel verknüpft sein, so erfolgt die Löschung erst nach der Bestätigung duch den Benutzer. /// </summary> /// <param name="title"></param> public void DeleteTitle(Title title) { string filename = title.Path + title.Filename; if (File.Exists(filename)) { DialogResult result = MessageBox.Show("Es ist eine gültige Datei mit diesem Eintrag verknüpft. Sind Sie sicher, dass sie diesen Eintrag und die Datei löschen wollen?", "Info", MessageBoxButtons.YesNo); if (result == DialogResult.No) { return; } //Lösche die Datei File.Delete(filename); } //Lösche den Eintrag in der Datenbank long titleId = title.Id; long albumId = title.AlbumId; long interpretId = title.InterpretId; using (var context = new MP3ManagerContext()) { //Ist kein weitere Titel mehr zum Album zugeordnet, so lösche das Album int countAlbum = context.Titles.Where(e => e.AlbumId == title.AlbumId) .Where(e => e.Id != title.Id) .Count(); if (countAlbum == 0) { var reloadedAlbum = context.Albums .Where(e => e.Id == title.AlbumId) .FirstOrDefault(); if (reloadedAlbum != null) { context.Albums.Remove(reloadedAlbum); } } //Ist kein weiterer Titel diesem Interpret zugeordnet, dann lösche den Interpreten int countInterpret = context.Titles.Where(e => e.InterpretId == title.InterpretId) .Where(e => e.Id != title.Id) .Count(); if (countInterpret == 0) { var reloadedInterpret = context.Interprets .Where(e => e.Id == title.InterpretId) .FirstOrDefault(); if (reloadedInterpret != null) { context.Interprets.Remove(reloadedInterpret); } } var reloadedTitle = context.Titles .Where(e => e.Id == title.Id) .FirstOrDefault(); if (reloadedTitle != null) { context.Titles.Remove(reloadedTitle); } context.SaveChanges(); } }
/// <summary> /// Diese Methode aktualisiert die übergebene Zeile in der Datenbank /// </summary> /// <param name="elementToUpdate"></param> public void Update(Title elementToUpdate) { if (elementToUpdate == null) { throw new ArgumentException("elementToUpdate == null"); } log.DebugFormat("updateTitle: id={0}", elementToUpdate.Id); using (var context = new MP3ManagerContext()) { context.Titles.Attach(elementToUpdate); context.SaveChanges(); } }