15/10/2021 1 Chapitre 3: Entity framework Core ENSEIGNANTE: DR. ING. GHOFRANE F

15/10/2021 1 Chapitre 3: Entity framework Core ENSEIGNANTE: DR. ING. GHOFRANE FERSI 1 Définition • ORM (Object Relational Mapping, Mapping objet relationnel) officiel de .NET Framework développé par Microsoft en utilisant le langage C# permettant de manipuler des objets C# . Proposé pour faciliter la tâche aux programmeurs en leur permettant de ne plus écrire de requêtes SQL dans leurs codes et les remplacer par des commandes très faciles. • Un programme informatique qui joue le rôle d’un traducteur entre le monde relationnel et le monde objet L’objectif : plus de requêtes SQL dans les classes. 2 Définition Dans les ORM, il y a deux composants : • Les entités (des classes à implémenter par le développeur) : qui représentent certaines tables •Le gestionnaire d’entités (une classe qui existe déjà) : à utiliser pour persister les entités dans la base de données. Dans le cas d’entity framework : • Les entités : des classes décorées (annotées) •Le gestionnaire d’entités : Linq to Entities 3 Définition • Entity Framework (EF) était intégré dans .NET framework 3.5 depuis 2008 • La version d’EF incluse dans .NET framework est EF6 •Version mature, qui supporte les modèles d’héritage complexes •A partir de EF6.3 , EF est extrait de .NET framework et est devenu dans un package séparé • Il supporte désormais .Net Core 3.0 et les versions d’après incluant .NET5. 4 15/10/2021 2 Définition •EF6 est considéré actuellement comme une version ancienne qui a des limites en l’appliquant dans cross-platform et il n’est pas possible d’ajouter de nouveaux composants • Pour utiliser la version ancienne EF6 dans un projet .NET Core 3.0 ou après, vous devez ajouter une référence au package dans votre fichier de projet <package Reference Include ="Entity Framework" Version="6.4.4" /> Conseil: Il vaut mieux éviter d’utiliser l’ancienne version 5 EF Core en comparaison à EF 6 • EF Core est nouveau et par la suite n’est pas encore aussi mature que EF6 •EF Core continue à supporter les éléments suivants: 1. DbContext & DbSet 2. Data Model 3. Querying utilisant Linq-to-Entities 4. Suivi des modifications 5. Enregistrement des changements 6. Migrations 6 EF Core en comparaison à EF 6 EF Core va inclure graduellement les fonctionnalités de EF6. Mais il y a des fonctionnalités qui ne sont plus supportées par EF Core comme: •EDMX/ Graphical Visualization of Model •Entity Data Model Wizard (pour DB-First approach) •ObjectContext API •Querying using Entity SQL •Automated Migration •Inheritance: Table per type (TPT) •Inheritance: Table per concrete class (TPC) 7 • Many-to-Many sans join entity • Entity Splitting • Spatial Data • Lazy loading des données reliées • Stored procedure mapping with DbContext pour CUD operation • Seed data • Automatic migration EF Core en comparaison à EF 6 EF Core inclue de nouvelles fonctionnalités qui n’étaient pas supportées par les versions antérieures: • Configuration facile des relations • Grouper les opérations d’insertion, mise à jour et suppression •Support d’inversion de contrôle (IOC) •Contraintes uniques • Propriétés de l'ombre (shadow properties) • Filtre de requête global • De meilleurs modèles pour gérer les graphiques d'entités déconnectés 8 15/10/2021 3 Entity Framework Core 9 EF Core: Fournisseur de base de données • Entity Framework Core utilise un modèle de fournisseur pour accéder à de nombreuses bases de données différentes. • EF Core inclut des fournisseurs en tant que packages NuGet que vous devez installer. • Le tableau suivant répertorie les fournisseurs de bases de données et les packages NuGet pour EF Core. 10 EF Core: Fournisseur de base de données 11 Installer EF Core Pour pouvoir utiliser Entity Framework Core avec le fournisseur de base de données choisi, il faut faire les étapes suivantes: outils->Gestionnaire de packets Nugets->Gérer les packages de Nuget pour la solution->parcourir-> Microsoft.EntityFrameworkCore • Reproduire les mêmes étapes pour ajouter le package relatif à votre fournisseur de base de données (pour notre cas Microsoft.EntityFrameworkCore.SqlServer) •Ajouter également le package Microsoft.EntityFrameworkCore.Relational Pour exécuter les commandes EF Core, il faut aussi ajouter le package Microsoft.EntityFrameworkCore.Tools 12 15/10/2021 4 EF Core: Approches Il existe deux approches : Code First : L’API EF Core crée la base de données et les tables en utilisant les migrations basées sur les conventions et les configurations fournies dans votre domaine de classes. Database First : EF Core crée le domaine et les classes de contexte en se basant sur la base de données existante en utilisant les commandes EF Core. EF Core vise essentiellement l’approche code first et donne un peu de support pour le Database First approche car le visual designer ou wizard pour le DB model sont non supportés par EF Core 2.0. Cette approche est bénéfique dans Domain Driven Design (DDD). 13 EF Core: Approches 14 Code First: Etapes à suivre •Création d’un projet Console •Intégrer Entity Framework Core et Entity Framework Core SQL Server dans le projet en utilisant Nuget Package manager • Créer le modèle (Entity Data Model) • Créer les entités • Générer la base de données et manipuler les données avec LINQ to Entities 15 Code First: Etapes à suivre • Entity Framework Core a besoin d’un modèle (Entity Data Model) pour communiquer avec la base de données • Il construit un modèle basé sur la forme de vos classes de domaine, les annotations de données et les configurations de Fluent API. •Le modèle EF comporte trois parties: le modèle conceptuel, le modèle de stockage et le mapping entre le modèle conceptuel et de stockage • Dans l'approche code-first, EF construit le modèle conceptuel basé sur vos classes de domaine (classes d'entité), la classe de contexte et les configurations. • EF Core crée le modèle de stockage et les mappages en fonction du fournisseur que vous utilisez. Par exemple, le modèle de stockage sera différent pour SQL Server par rapport à DB2. 16 15/10/2021 5 Code First: Etapes à suivre 17 • EF utilise ce modèle pour les opérations CRUD (Créer, Lire, Mettre à jour, Supprimer) dans la base de données sous-jacente. Nous devons donc d'abord créer des classes d'entités et des classes de contexte. Les éléments suivants sont des classes d'entités simples pour Student et Course : • Bouton droit sur notre solution (nommée ENISSchool), ajouter classe dans le dossier modèle, la nommer Student.cs Code First: Etapes à suivre 18 Code First: Etapes à suivre 19 Nous allons de même créer la classe Course.cs Code First: Etapes à suivre Maintenant, nous créons la classe de contexte. La classe ENISContext est aussi appelée classe de contexte (context class) 20 15/10/2021 6 using Microsoft.EntityFrameworkCore; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ENISSchool { class ENISContext: DbContext { public DbSet<Student> Students { get; set; } public DbSet<Course> Courses { get; set; } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { optionsBuilder.UseSqlServer(@"Server=DESKTOP- UM4MFE5;Database=SchoolDB;Trusted_Connection=True;"); } } } 21 Code First: Etapes à suivre • La classe de contexte présentée inclue deux propriétés DbSet<Tentity> pour Student et Course • Ces deux vont être mappées à deux tables Students et Courses dans la base de données ENIS • Dans la méthode OnConfiguring(),une instance de DbContextOptionsBuilder est utilisée pour spécifier quelle est la base de données à utiliser. • 22 Code First: Etapes à suivre •Le connection string "Server=DESKTOP- UM4MFE5;Database=<ENISDB;Trusted_Connection=True;" dans la méthode UseSqlServer fourni l’information base de données: Server= spécifie le serveur DB à utiliser (chacun doit mettre le nom de son serveur), Database= spécifie le nom de la base de données à créer et Trusted_Connection=True spécifie Windows authentication mode. EF Core va utiliser cette connection string pour créer une base de données quand nous lançons la migration. 23 Code First: Etapes à suivre • Une fois les classes d’entité et de contexte crées, nous ajoutons une migration pour créer la base de données •EF Core inclue plusieurs commandes de migration qui permettent de créer et mettre à jour la base de données sur le modèle. Actuellement, il n’y a pas la base de données ENISDB. • Il faut ainsi créer la base de données à partir du modèle (Entités et contexte) en ajoutant un migration •La commande de migration peut être exécutée en utilisant Nuget ou bien dotnet CLI (à travers la ligne de commande) 24 15/10/2021 7 Code First: Etapes à suivre •Dans Vstudio, ouvrir Gestionnaire de Package Nuget, Console du gestionnaire de package et entrez la commande suivante: add-migration CreateSchoolDB •Si vous utilisez .NET CLI, entrez la commande suivante: dotnet ef migrations add CreateSchoolDB 25 Code First: Etapes à suivre 26 Un nouveau dossier Migrations est crée avec des sous fichiers Code First: Etapes à suivre Maintenant il est temps de créer la base de données en utilisant la commande update-database dans la console du package manager: PM> update-database –verbose Ou bien si vous utilisez la commande dans NET CLI dotnet ef database update • Ainsi, la base de données ENISDB est crée avec le nom et le chemin spécifiés dans le chemin indiqué dans la connection String. Les tables Students et Courses sont crées également. 27 Code First: Etapes à suivre 28 15/10/2021 8 Code First: Etapes à suivre • S’il y aura des modifications uploads/S4/ chapitre-3-ef.pdf

  • 23
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager
  • Détails
  • Publié le Dec 13, 2022
  • Catégorie Law / Droit
  • Langue French
  • Taille du fichier 1.6530MB