示例#1
0
        /// <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();
            }
        }
示例#2
0
 /// <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();
     }                
 }