// TODO! (uitbreiding) // TIP: Je kan een uitgeverij pas verwijderen indien geen enkel boek deze nog referenced. // Toon dus een gepaste melding als dit het geval is -- geen exception! private static void DeletePublisher() { string uitgeverijNaam = TextInput("Naam uitgeverij"); using (var context = new BoekenDatabaseContext()) { // zoek de auteur; kijk of die bestaat // FirstOrDefault geeft een uitgeverij terug indien gevonden // of 'null' indien niks gevonden var uitgeverij = context.Uitgeverijen .Include(uitgeverij => uitgeverij.Boeken) .FirstOrDefault(uitgeverij => uitgeverij.Naam == uitgeverijNaam); if (uitgeverij == null) { Error("Geen uitgeverij met deze naam gevonden"); return; } if (uitgeverij.Boeken.Any()) { Error("Deze uitgeverij heeft verschillende boeken uitgebracht. Verwijderen is niet toegestaan!"); return; } context.Uitgeverijen.Remove(uitgeverij); context.SaveChanges(); Success("Uitgeverij werd verwijderd"); } }
// TODO! (uitbreiding) // TIP: Je kan een auteur pas verwijderen indien geen enkel boek deze nog referenced. // Toon dus een gepaste melding als dit het geval is -- geen exception! private static void DeleteAuthor() { int authorId = NumericInput("Author ID"); using (var context = new BoekenDatabaseContext()) { // zoek de auteur; kijk of die bestaat var auteur = context.Auteurs .Include(auteur => auteur.Boeken) .FirstOrDefault(auteur => auteur.Id == authorId); if (auteur == null) { Error("Geen auteur met deze ID gevonden"); return; } if (auteur.Boeken.Any()) { Error("Deze auteur heeft verschillende boeken uitgebracht. Verwijderen is niet toegestaan!"); return; } context.Auteurs.Remove(auteur); context.SaveChanges(); Success("Deze auteur werd verwijderd"); } Header(); }
// TODO! // Toevoegen van een uitgeverij // Tip: een auteur heeft veld [Id] (automatisch gegenereerd) en een [Naam] private static void AddPublisher() { Console.WriteLine("# Uitgeverij toevoegen"); string naam = TextInput("Naam"); using (var context = new BoekenDatabaseContext()) { // Kijk of boek al bestaat var uitgeverijBestaat = context.Uitgeverijen .Any(uitgeverij => uitgeverij.Naam == naam); if (uitgeverijBestaat) { Error("Deze uitgeverij bestaat al!"); return; } context.Uitgeverijen.Add(new Uitgeverij { Naam = naam }); context.SaveChanges(); Success($"Uitgeverij '{naam}' toegevoegd."); } Header(); }
// TODO! // Toevoegen van een auteur // Tip: een auteur heeft veld [Id] (automatisch gegenereerd) en een [Naam] private static void AddAuthor() { Console.WriteLine("# Auteur toevoegen"); string naam = TextInput("Naam"); using (var context = new BoekenDatabaseContext()) { // Kijk of boek al bestaat var auteurBestaat = context.Auteurs.Any(auteur => auteur.Naam == naam); if (auteurBestaat) { Error("Deze auteur bestaat al!"); return; } context.Auteurs.Add(new Auteur { Naam = naam }); context.SaveChanges(); Success($"Auteur '{naam}' toegevoegd."); } Header(); }
private static void DeleteBook() { Console.WriteLine("# Boek verwijderen"); string isbnnr = TextInput("ISBN-nummer"); using (var context = new BoekenDatabaseContext()) { var boek = context.Boeken.FirstOrDefault(boek => boek.ISBNNr == isbnnr); if (boek == null) { Error($"Boek met isbn-nummer '{isbnnr}' werd niet gevonden"); return; } context.Boeken.Remove(boek); context.SaveChanges(); Success("Boek werd verwijderd"); } Header(); }
// TODO! // Toevoegen van een boek // Tip: een auteur heeft veld [Id] (automatisch gegenereerd), [Titel], [PaginaAantal] en 2 foreign keys private static void AddBook() { string title = TextInput("Titel"); string isbnnr = TextInput("ISBN-nummer"); int aantalPaginas = NumericInput("Aantal pagina's"); string uitgeverijNaam = TextInput("Naam uitgeverij"); string auteurNaam = TextInput("Naam auteur"); using (var context = new BoekenDatabaseContext()) { // Bestaat boek al ? var bestaandBoek = context.Boeken.FirstOrDefault(boek => boek.ISBNNr == isbnnr || boek.Title == title); if (bestaandBoek != null) { Error($"Dit boek bestaat al (id = {bestaandBoek.ISBNNr})"); } else { // Boek toevoegen -- een boek heeft een auteur en uitgeverij nodig. // Indien een auteur al bestaat, wil ik dat deze gebruikt wordt. Anders aanmaken. // Idem voor een uitgeverij Uitgeverij uitgeverij = context.Uitgeverijen.FirstOrDefault(u => u.Naam == uitgeverijNaam); // Uitgeverij werd niet gevonden if (uitgeverij == null) { // Dus maken we één aan: uitgeverij = new Uitgeverij { Naam = uitgeverijNaam }; context.Uitgeverijen.Add(uitgeverij); Success("Info: nieuwe uitgeverij aangemaakt"); } // We doen hetzelfde voor auteur Auteur auteur = context.Auteurs.FirstOrDefault(u => u.Naam == auteurNaam); // Auteur werd werd niet gevonden if (auteur == null) { // Dus maken we één aan: auteur = new Auteur { Naam = auteurNaam }; context.Auteurs.Add(auteur); Success("Info: nieuwe auteur aangemaakt"); } // Ik heb nu toegang tot zowel Auteur als Uitgeverij // Of die al dan niet 'nieuw' of 'bestaand' is, maakt niet meer uit. EF Core houdt daar rekening mee. // Volgende stap is om het boek te maken var boek = new Boek { ISBNNr = isbnnr, Auteur = auteur, Uitgeverij = uitgeverij, PaginaAantal = aantalPaginas, Title = title // UitgeverijID en AuteurID moet ik niet invullen }; // En toevoegen aan de context context.Boeken.Add(boek); // Laatste stap is om te saven context.SaveChanges(); Success("Boek werd toegevoegd!"); } } Header(); }