using Microsoft.Data.Sqlite; using Microsoft.EntityFrameworkCore; using System; using static System.Console; namespace ex_042_016_OneToMany_FluentAPI { class Program { /// /// Cet exemple montre comment construire une relation 1-many dans la base de données en utilisant les conventions de nommage Entity Framework. /// /// On affiche les Albums et les Morceaux. /// Constatez que les identifiants sont bien les mêmes à cause de la relation 1-many. /// /// Si vous ouvrez la base de données (via l'explorateur d'objets SQL Server), vous pourrez constater que la table Morceaux /// contient une colonne Album_UniqueId qui permet d'assurer la relation 1-many. /// /// static void Main(string[] args) { OutputEncoding = System.Text.Encoding.UTF8; try { using (AlbumDBEntities db = new AlbumDBEntities()) { WriteLine("Albums : "); foreach (var a in db.Albums.Include(a => a.Morceaux)) { WriteLine($"\t{a.AlbumId}: {a.Titre} (sorti le : {a.DateDeSortie.ToString("d")})"); foreach (var m in a.Morceaux) { WriteLine($"\t\t{m.Titre}"); } } WriteLine(); WriteLine("Morceaux :"); foreach (var m in db.Morceaux) { WriteLine($"\t{m.MorceauId}: {m.Titre} (album : {m.Album.Titre})"); } WriteLine("\nAjout d'un album et 6 morceaux...\n"); Album captainMarvel = new Album { Titre = "Captain Marvel", DateDeSortie = new DateTime(1972, 3, 3) }; Morceau[] morceaux = { new Morceau { Titre = "La Fiesta", Album = captainMarvel }, new Morceau { Titre = "Five Hundred Miles High", Album = captainMarvel }, new Morceau { Titre = "Captain Marvel", Album = captainMarvel }, new Morceau { Titre = "Time's Lie", Album = captainMarvel }, new Morceau { Titre = "Lush Life", Album = captainMarvel }, new Morceau { Titre = "Day Waves", Album = captainMarvel } }; foreach (var m in morceaux) { captainMarvel.Morceaux.Add(m); } db.Add(captainMarvel); db.SaveChanges(); } using (AlbumDBEntities db = new AlbumDBEntities()) { WriteLine("Albums : "); foreach (var a in db.Albums.Include(a => a.Morceaux)) { WriteLine($"\t{a.AlbumId}: {a.Titre} (sorti le : {a.DateDeSortie.ToString("d")})"); foreach (var m in a.Morceaux) { WriteLine($"\t\t{m.Titre}"); } } WriteLine(); WriteLine("Morceaux :"); foreach (var m in db.Morceaux) { WriteLine($"\t{m.MorceauId}: {m.Titre} (album : {m.Album.Titre})"); } } } catch (NotImplementedException exception) { WriteLine(exception.Message); } catch (SqliteException exc) { WriteLine("Votre base de données n'existe pas. C'est peut-être la première fois que vous exécutez cet exemple."); WriteLine("Pour créer la base de données, suivez les instructions données dans le fichier ReadMe.md associé à cet exemple."); } ReadLine(); } } }