You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
99 lines
4.1 KiB
99 lines
4.1 KiB
using Microsoft.Data.Sqlite;
|
|
using Microsoft.EntityFrameworkCore;
|
|
using System;
|
|
using static System.Console;
|
|
|
|
namespace ex_042_016_OneToMany_FluentAPI
|
|
{
|
|
class Program
|
|
{
|
|
/// <summary>
|
|
/// 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.
|
|
/// </summary>
|
|
/// <param name="args"></param>
|
|
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();
|
|
}
|
|
}
|
|
}
|