From 68179ed5c2525ac039185c2a98bcc21eed8ef80e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Chevaldonn=C3=A9?= Date: Wed, 22 Jan 2020 23:37:08 +0100 Subject: [PATCH] delete old sample version --- ex_042_008_EF_CF_One_to_Many/Album.cs | 47 ---------- .../AlbumDBEntities.cs | 31 ------- .../DbContextInitializer.cs | 85 ------------------ ex_042_008_EF_CF_One_to_Many/Morceau.cs | 43 --------- ex_042_008_EF_CF_One_to_Many/Program.cs | 87 ------------------- .../ex_042_008_EF_CF_One_to_Many.csproj | 21 ----- 6 files changed, 314 deletions(-) delete mode 100644 ex_042_008_EF_CF_One_to_Many/Album.cs delete mode 100644 ex_042_008_EF_CF_One_to_Many/AlbumDBEntities.cs delete mode 100644 ex_042_008_EF_CF_One_to_Many/DbContextInitializer.cs delete mode 100644 ex_042_008_EF_CF_One_to_Many/Morceau.cs delete mode 100644 ex_042_008_EF_CF_One_to_Many/Program.cs delete mode 100644 ex_042_008_EF_CF_One_to_Many/ex_042_008_EF_CF_One_to_Many.csproj diff --git a/ex_042_008_EF_CF_One_to_Many/Album.cs b/ex_042_008_EF_CF_One_to_Many/Album.cs deleted file mode 100644 index 54dae66..0000000 --- a/ex_042_008_EF_CF_One_to_Many/Album.cs +++ /dev/null @@ -1,47 +0,0 @@ -// ======================================================================== -// -// Copyright (C) 2016-2017 MARC CHEVALDONNE -// marc.chevaldonne.free.fr -// -// Module : Album.cs -// Author : Marc Chevaldonné -// Creation date : 2016-10-19 -// -// ======================================================================== - - -using System; -using System.Collections.Generic; -using System.ComponentModel.DataAnnotations; -using System.ComponentModel.DataAnnotations.Schema; - -namespace ex_042_008_EF_CF_One_to_Many -{ - /// - /// Album est une classe POCO, i.e. Plain Old CLR Object. - /// Elle a une relation 1-many avec la classe Morceau via la propriété Morceaux. - /// La clé primaire est générée lors de l'insertion en table. - /// - [Table("Albums")] - public class Album - { - [Key] - [DatabaseGenerated(DatabaseGeneratedOption.Identity)] - public Guid UniqueId - { - get; set; - } - - public string Titre - { - get; set; - } - - public DateTime DateDeSortie - { - get; set; - } - - public virtual ICollection Morceaux { get; set; } = new List(); - } -} diff --git a/ex_042_008_EF_CF_One_to_Many/AlbumDBEntities.cs b/ex_042_008_EF_CF_One_to_Many/AlbumDBEntities.cs deleted file mode 100644 index 2d97a50..0000000 --- a/ex_042_008_EF_CF_One_to_Many/AlbumDBEntities.cs +++ /dev/null @@ -1,31 +0,0 @@ -// ======================================================================== -// -// Copyright (C) 2016-2017 MARC CHEVALDONNE -// marc.chevaldonne.free.fr -// -// Module : AlbumDBEntities.cs -// Author : Marc Chevaldonné -// Creation date : 2016-10-19 -// -// ======================================================================== - - -using Microsoft.EntityFrameworkCore; - -namespace ex_042_008_EF_CF_One_to_Many -{ - /// - /// La classe qui dérive de DbContext est celle qui permettra de faire les opérations CRUD sur le modèle. - /// Cette classe contient deux DbSet pour permettre de réaliser des opérations CRUD sur les types T, ici Album et Morceau. - /// - public class AlbumDBEntities : DbContext - { - public virtual DbSet Albums { get; set; } - public virtual DbSet Morceaux { get; set; } - - protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) - { - optionsBuilder.UseSqlServer(@"Server=(localdb)\mssqllocaldb;Database=ex_042_008_EF_CF_One_to_Many.Albums.mdf;Trusted_Connection=True;"); - } - } -} diff --git a/ex_042_008_EF_CF_One_to_Many/DbContextInitializer.cs b/ex_042_008_EF_CF_One_to_Many/DbContextInitializer.cs deleted file mode 100644 index e478df5..0000000 --- a/ex_042_008_EF_CF_One_to_Many/DbContextInitializer.cs +++ /dev/null @@ -1,85 +0,0 @@ -// ======================================================================== -// -// Copyright (C) 2016-2017 MARC CHEVALDONNE -// marc.chevaldonne.free.fr -// -// Module : DbContextInitializer.cs -// Author : Marc Chevaldonné -// Creation date : 2016-10-19 -// -// ======================================================================== - -using Microsoft.EntityFrameworkCore; -using System; - -namespace ex_042_008_EF_CF_One_to_Many -{ - /// - /// initialiseur de stratégies... - /// - public static class DbContextInitializer - { - /// - /// remplissage de la base avec des données stubbées. - /// - /// base à remplir - public static void Seed(AlbumDBEntities context) - { - SetInitializer(context, InitializationStrategies.DropCreateDatabaseAlways); - - Album kindofblue = new Album { Titre = "Kind of Blue", DateDeSortie = new DateTime(1959, 8, 17) }; - Morceau[] kindofblueMorceaux = { new Morceau { Album = kindofblue, Titre = "So What" }, - new Morceau { Album = kindofblue, Titre = "Freddie Freeloader" }, - new Morceau { Album = kindofblue, Titre = "Blue in Green" }, - new Morceau { Album = kindofblue, Titre = "All Blues" }, - new Morceau { Album = kindofblue, Titre = "Flamenco Sketches" } }; - foreach (var m in kindofblueMorceaux) kindofblue.Morceaux.Add(m); - - Album dialogue = new Album { Titre = "Dialogue", DateDeSortie = new DateTime(1965, 9, 1) }; - Morceau[] dialogueMorceaux = { new Morceau { Album = dialogue, Titre = "Catta" }, - new Morceau { Album = dialogue, Titre = "Idle While" }, - new Morceau { Album = dialogue, Titre = "Les Noirs Marchant" }, - new Morceau { Album = dialogue, Titre = "Dialogue" }, - new Morceau { Album = dialogue, Titre = "Ghetto Lights" }, - new Morceau { Album = dialogue, Titre = "Jasper" } }; - foreach (var m in dialogueMorceaux) dialogue.Morceaux.Add(m); - - context.Albums.AddRange(new Album[] { kindofblue, dialogue }); - context.Morceaux.AddRange(kindofblueMorceaux); - context.Morceaux.AddRange(dialogueMorceaux); - - context.SaveChanges(); - } - - /// - /// les différentes stratégies de création de la base - /// - public enum InitializationStrategies - { - CreateDatabaseIfNotExists, - DropCreateDatabaseIfModelChanges, - DropCreateDatabaseAlways - } - public static void SetInitializer(DbContext context, InitializationStrategies strategy) - { - switch (strategy) - { - //par défaut : crée la base seulement si elle n'existe pas - default: - case InitializationStrategies.CreateDatabaseIfNotExists: - context.Database.EnsureCreated(); - break; - - //recrée la base même si elle existe déjà - case InitializationStrategies.DropCreateDatabaseAlways: - context.Database.EnsureDeleted(); - context.Database.EnsureCreated(); - break; - - //recrée la base seulement si le modèle change : impossible aujourd'hui en Entity Framework Core... - case InitializationStrategies.DropCreateDatabaseIfModelChanges: - throw new NotImplementedException("Le mode DropCreateDatabaseIfModelChanges ne peut pas encore exister sous Entity Framework Core"); - } - } - } -} diff --git a/ex_042_008_EF_CF_One_to_Many/Morceau.cs b/ex_042_008_EF_CF_One_to_Many/Morceau.cs deleted file mode 100644 index 743e1ba..0000000 --- a/ex_042_008_EF_CF_One_to_Many/Morceau.cs +++ /dev/null @@ -1,43 +0,0 @@ -// ======================================================================== -// -// Copyright (C) 2016-2017 MARC CHEVALDONNE -// marc.chevaldonne.free.fr -// -// Module : Morceau.cs -// Author : Marc Chevaldonné -// Creation date : 2016-10-19 -// -// ======================================================================== - -using System; -using System.ComponentModel.DataAnnotations; -using System.ComponentModel.DataAnnotations.Schema; - -namespace ex_042_008_EF_CF_One_to_Many -{ - /// - /// Morceau est une classe POCO, i.e. Plain Old CLR Object. - /// Elle a une relation 1-many avec la classe Morceau via la propriété Album. - /// La clé primaire est générée lors de l'insertion en table. - /// - [Table("Morceaux")] - public class Morceau - { - [Key] - [DatabaseGenerated(DatabaseGeneratedOption.Identity)] - public int UniqueId - { - get; set; - } - - public string Titre - { - get; set; - } - - public virtual Album Album - { - get; set; - } - } -} diff --git a/ex_042_008_EF_CF_One_to_Many/Program.cs b/ex_042_008_EF_CF_One_to_Many/Program.cs deleted file mode 100644 index a8d7580..0000000 --- a/ex_042_008_EF_CF_One_to_Many/Program.cs +++ /dev/null @@ -1,87 +0,0 @@ -// ======================================================================== -// -// Copyright (C) 2016-2017 MARC CHEVALDONNE -// marc.chevaldonne.free.fr -// -// Module : Program.cs -// Author : Marc Chevaldonné -// Creation date : 2016-10-19 -// -// ======================================================================== - -using Microsoft.EntityFrameworkCore; -using System; -using static System.Console; - -namespace ex_042_008_EF_CF_One_to_Many -{ - 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 utilise les données stubbées de DbContextInitializer - /// 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 - { - //création du DbContext et injection de la dépendance à MyStubDataInitializationStrategy - using (AlbumDBEntities db = new AlbumDBEntities()) - { - //choix de la stratégie et remplissage avec des données stubbées - DbContextInitializer.Seed(db); - } - using (AlbumDBEntities db = new AlbumDBEntities()) - { - WriteLine("Albums : "); - foreach (var a in db.Albums.Include(a => a.Morceaux)) - { - WriteLine($"\t{a.UniqueId}: {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.UniqueId}: {m.Titre} (album : {m.Album.Titre})"); - } - - } - } - catch (NotImplementedException exception) - { - WriteLine(exception.Message); - } - catch (Exception) - { - 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 suivantes (que vous retrouvez en commentaires dans la classe Program) :"); - WriteLine("Pour créer la base, ouvrez un invite de commandes et placez-vous dans le dossier de ce projet, ou bien,"); - WriteLine("- dans Visual Studio ouvrez la Console du Gestionnaire de package (Outils -> Gestionnaire de package NuGet -> Console du Gestionnaire de package),"); - WriteLine("- dans cette Console, vous devriez être dans le dossier de la solution, déplacez-vous dans celui du projet (ici : cd ex_042_008_EF_CF_One_to_Many)"); - WriteLine("- tapez : dotnet restore (pour restaurer les packages .NET Core)"); - WriteLine("- tapez : dotnet ef migrations add MyFirstMigration"); - WriteLine(" note : vous pourrez détruire le dossier Migrations une fois la base créée"); - WriteLine("- tapez : dotnet ef database update"); - WriteLine(" Ceci génère la base de données en utilisant la migration, et en particulier votre classe DBContext et vos classes POCO."); - WriteLine("\nDans cet exemple, une base de données SQLServer est créée et en particulier la table Nounours.mdf"); - } - - ReadLine(); - } - } -} diff --git a/ex_042_008_EF_CF_One_to_Many/ex_042_008_EF_CF_One_to_Many.csproj b/ex_042_008_EF_CF_One_to_Many/ex_042_008_EF_CF_One_to_Many.csproj deleted file mode 100644 index 04ffac4..0000000 --- a/ex_042_008_EF_CF_One_to_Many/ex_042_008_EF_CF_One_to_Many.csproj +++ /dev/null @@ -1,21 +0,0 @@ - - - netcoreapp3.0 - ex_042_008_EF_CF_One_to_Many - Exe - ex_042_008_EF_CF_One_to_Many - 3.0.1 - false - false - false - - - - - - - all - runtime; build; native; contentfiles; analyzers; buildtransitive - - -