From b47b8956f2b444830c0b78c99d6140db4049d7b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Chevaldonn=C3=A9?= Date: Mon, 30 Dec 2019 19:45:08 +0100 Subject: [PATCH] ended first quick tutorial --- p08_BDD_EntityFramework/ReadMe.md | 130 +++++++++++++++++++++++++++++- 1 file changed, 129 insertions(+), 1 deletion(-) diff --git a/p08_BDD_EntityFramework/ReadMe.md b/p08_BDD_EntityFramework/ReadMe.md index f46b084..9bfc620 100644 --- a/p08_BDD_EntityFramework/ReadMe.md +++ b/p08_BDD_EntityFramework/ReadMe.md @@ -127,4 +127,132 @@ dotnet ef database update Si vous n'avez pas installé correctement EntityFrameworkCore, il vous faudra peut-être utiliser également : -```dotnet tool install --global dotnet-ef``` \ No newline at end of file +```dotnet tool install --global dotnet-ef``` + +##### Utilisez votre base de données via Entity Framework Core +* Editez *Program.cs* et ajoutez le code suivant : +```csharp +static void Main(string[] args) +{ + Nounours chewie = new Nounours { Nom = "Chewbacca", Naissance = new DateTime(1977, 5, 27), NbPoils = 1234567 }; + Nounours yoda = new Nounours { Nom = "Yoda", Naissance = new DateTime(1980, 5, 21), NbPoils = 3 }; + Nounours ewok = new Nounours { Nom = "Ewok", Naissance = new DateTime(1983, 5, 25), NbPoils = 3456789 }; + Nounours c3po = new Nounours { Nom = "C3PO", Naissance = new DateTime(1977, 5, 27), NbPoils = 0 }; + + using (var context = new NounoursContext()) + { + // Crée des nounours et les insère dans la base + Console.WriteLine("Creates and inserts new Nounours"); + context.Add(chewie); + context.Add(yoda); + context.Add(ewok); + context.Add(c3po); + context.SaveChanges(); + } +} +``` +Maintenant, lorsque vous lancerez l'application, la base de données contiendra 3 nounours. La base crée automatiquement des identifiants pour chaque Nounours. +* Editez *Program.cs* pour rajouter les lignes suivantes à la fin de la méthode ```Main``` : +```csharp +// Lit le premier nounours de la base dont le nom commence par 'e' +Console.WriteLine("Creates and executes a query retrieving the first Nounours of the database whose name starts with an \"e\":"); +var eNounours = context.Nounours + .Where(n => n.Nom.StartsWith("e")) + .First(); +Console.WriteLine($"{eNounours.Nom} (born in {eNounours.Naissance.Year})"); +``` +Cette requête LINQ vous permet de lire le premier nounours de la base de nounours triés par ordre alphabétique de noms. +Ceci nécessite de rajouter au-début du fichier *Program.cs* la ligne suivante : +```csharp +using System.Linq; +``` +* Editez *Program.cs* pour rajouter les lignes suivantes à la fin de la méthode ```Main``` : +```csharp +// Met à jour le nom du second nounours de la base +Console.WriteLine("Updates the name of the second nounours"); +eNounours.Nom = "Wicket"; +context.SaveChanges(); +``` +Cette partie du code montre comment mettre à jour un élément de la base de données. +* Editez *Program.cs* pour rajouter les lignes suivantes à la fin de la méthode ```Main``` : +```csharp +// récupère le nounours qui n'en est pas un et le supprime de la base +Console.WriteLine("Deletes one item from de database"); +var droid = context.Nounours + .SingleOrDefault(n => n.Nom.Equals("C3PO")); +context.Remove(droid); +context.SaveChanges(); +``` +Cette partie du code montre comment supprimer un élément de la base de données. + +Voici un récapitulatif du fichier *Program.cs* : +```csharp +using System; +using System.Linq; + +namespace tutoRapideEFCore +{ + class Program + { + static void Main(string[] args) + { + Nounours chewie = new Nounours { Nom = "Chewbacca", Naissance = new DateTime(1977, 5, 27), NbPoils = 1234567 }; + Nounours yoda = new Nounours { Nom = "Yoda", Naissance = new DateTime(1980, 5, 21), NbPoils = 3 }; + Nounours ewok = new Nounours { Nom = "Ewok", Naissance = new DateTime(1983, 5, 25), NbPoils = 3456789 }; + Nounours c3po = new Nounours { Nom = "C3PO", Naissance = new DateTime(1977, 5, 27), NbPoils = 0 }; + + using (var context = new NounoursContext()) + { + // Crée des nounours et les insère dans la base + Console.WriteLine("Creates and inserts new Nounours"); + context.Add(chewie); + context.Add(yoda); + context.Add(ewok); + context.Add(c3po); + context.SaveChanges(); + + // Lit le premier nounours de la base dont le nom commence par 'e' + Console.WriteLine("Creates and executes a query retrieving the first Nounours of the database whose name starts with an \"e\":"); + var eNounours = context.Nounours + .Where(n => n.Nom.StartsWith("e")) + .First(); + Console.WriteLine($"{eNounours.Nom} (born in {eNounours.Naissance.Year})"); + + // Met à jour le nom du second nounours de la base + Console.WriteLine("Updates the name of the second nounours"); + eNounours.Nom = "Wicket"; + context.SaveChanges(); + + // récupère le nounours qui n'en est pas un et le supprime de la base + Console.WriteLine("Deletes one item from de database"); + var droid = context.Nounours + .SingleOrDefault(n => n.Nom.Equals("C3PO")); + context.Remove(droid); + context.SaveChanges(); + } + } + } +} +``` +* Exécutez votre application pour vérifier son bon fonctionnement. + +##### Vérifiez le contenu de la base de données avec l'Explorateur d'objets SQL Server +Vous pouvez vérifier le contenu de votre base en utilisant l'*Explorateur d'objets SQL Server*. +* Pour cela, allez dans le menu *Affichage* puis *Explorateur d'objets SQL Server*. +* Déployez dans l'*Explorateur d'objets SQL Server* : + * *SQL Server*, + * puis *(localdb)\MSSQLLocalDB ...*, + * puis *Bases de données* + * puis celle portant le nom de votre migration, dans mon cas : *myFirstDatabase.Nounours.mdf* + * puis *Tables* + * Faites un clic droit sur la table *dbo.Nounours* puis choisissez *Afficher les données* + * Vous devriez maintenant pouvoir voir les données suivantes dans le tableau : + + |Id |Nom |Naissance |NbPoils + |---|---|---|--- + |1|Chewbacca|27/05/1977 00:00:00|1234567 + |2|Yoda|21/05/1980 00:00:00|3 + |3|Wicket|25/05/1983 00:00:00|3456789 + +Vous pouvez constater que l'Ewok a bien été renommé Wicket, et que C3PO a bien été supprimé. +Notez qu'il est également possible d'utiliser l'*Explorateur d'objets SQL Server* pour ajouter, modifier ou supprimer des données dans les tables. \ No newline at end of file