Brave publisher PUBLISHER
Développeur web Front-End dans l'Oise - Gary Deshayes

Veille technologique Entity Framework C# .NET

Développeur web Front-End dans l'Oise - Gary Deshayes<--English translation

Cette veille technologique date de mon BTS en 2018, il est possible que le code soit déprécié. Bonne lecture.

Pour ma veille technologique, j’ai choisi un thème en rapport avec les technologies que je côtoie déjà.

Mon choix se porte donc sur Entity Framework qui est l’ORM du framework .net qui est un framework en C#.

Tout d’abord, qu’est-ce qu’un ORM ?

Un ORM (de l’anglais object-relational mapping) est une technique de programmation qui permet de transformer les tables d’une base de données en objet, c’est-à-dire que tout ce qui touche à la base de données se fera désormais en objet, nous verrons plus loin en détails ce que cela veut dire.

Comment ajouter entity framework au projet voulu ?

Entity framework n’étant pas de base dans le projet, il faut l’ajouter, pour se faire il suffit de faire un clic droit sur le projet et de cliquer sur gérer les packages NuGet.

C# Entity Framework .NET Tutorial

 

NuGet permet de faire des recherches pour ajouter des packages à notre projet.

Il suffit ensuite de rechercher Entity Framework grâce au champ de saisie situé en haut à gauche.

 

C# Entity Framework .NET Tutorial

Une fois trouvé, cliquez sur EntityFramework et installez le, comme vous pouvez le voir, mon EntityFramework est déjà installé en version 5.0.0.

Une fois l’installation finie, EntityFramework sera en référence dans votre projet, si ce n’est pas le cas il faudra l’ajouter pour l’utiliser.

                                                                                                  C# Entity Framework .NET Tutorial

Relier la base de données à l’ORM Entity Framework

L’ajout d’Entity Framework en tant que référence du projet ne suffit pas à pouvoir s’en servir, il faut dorénavant le relier à notre base de données.

Pour se faire faites un clic droit sur le projet et faites ajouter un nouvel élément, choisissez ensuite ADO.NET Entity Data Model.

 

C# Entity Framework .NET Tutorial

Après cet ajout, il faut choisir le modèle, nous prendrons le premier choix.

C# Entity Framework .NET Tutorial

Il faut ensuite gérer la connexion avec la base de données

 

C# Entity Framework .NET Tutorial

Cliquez sur nouvelle connexion et une nouvelle page va apparaitre.

C# Entity Framework .NET Tutorial

Il faut donner le type de la source de données, qui je ne l’ai pas précisé, doit être de type SQL Server.

Ensuite indiquer le nom du serveur de la base de données, dans mon cas j’étais en local.

Pour finir il faut sélectionner le nom de notre base de données, ma base de données sera celle de mon tutoriel que nous verrons plus loin.

Faites tester la connexion pour s’assurer du bon fonctionnement et ensuite Ok, au retour de la page du choix de la connexion faites suivant.

 

Nous arrivons maintenant sur les entités que nous allons inclure dans le modèle, dans mon cas je n’avais que des tables à ajouter, mais il est également possible d’ajouter des vues ou des procédures et fonctions stockées.

C# Entity Framework .NET Tutorial

Faites terminer et voici votre connexion entre Entity Framework et votre base de données effectuée.

Que se passe-t-il après la connexion avec Entity Framework ?

Après la connexion Entity Framework va générer ce qu’on appelle un fichier .edmx, il contient l’intégralité des entités de votre base de données.

Dans mon cas il figure que je n’ai que trois tables.

C# Entity Framework .NET Tutorial

Mais vous pourriez très bien avoir 540 tables !

Vous devez apercevoir que votre fichier .edmx a des sous fichiers, nous allons les aborder un par un.

Le fichier .context.tt, je n’ai malheureusement trouvé aucune documentation à ce sujet je ne peux donc pas en parler.

 

Le fichier .context.cs est la classe de notre base de données elle contient le nom de connexion à la base de données et les accesseurs des classes des tables.

Le nom de la connexion que nous voyons à coter du  :base(« name=… ») est celui qui permets de faire la connexion à notre base de données, il se situe dans notre fichier App.config

Exemple :

C# Entity Framework .NET Tutorial

C# Entity Framework .NET Tutorial

Pour pouvoir se connecter à la base de données, il faut dans le name=… donner le même name qui permet de se connecter à la base de données qui se situe dans le fichier App.config.

Les fichiers .Designer.cs et .edmx.diagram concernent le diagramme edmx présenté plus haut.

Les fichiers qui nous intéressent vraiment sont ceux qui descendent du fichier.tt

C# Entity Framework .NET Tutorial

Ils contiennent les classes de mes tables dans la base de données, je n’ai donc que trois fichiers, mais s’il y avait 540 tables vous auriez 540 fichiers.

Voici un aperçu de ma classe produits par exemple :

C# Entity Framework .NET Tutorial

Dans l’encadré rouge apparaissent les propriétés générées par Entity Framework, elle permettent soit d’obtenir ou se définir une caractéristique du produit dans le cas présent.

La propriété laCategorie a été ajoutée par moi pour un besoin dans un DataGridView.

Maintenant que la présentation générale des fichiers a été faite, nous allons passer a une vraie présentation de l’ORM.

 

Présentation de la programmation avec Entity Framework

Comme je le disais précédemment, tout se fera désormais en objet, il n’y aura désormais plus aucune requête SQL au sein de votre code.

Mais comment faire pour procéder à ces requêtes ? Voici un exemple d’affichage de produits dans un DataGridView.

C# Entity Framework .NET Tutorial

Voici notre affichage de produits.

Il n’a fallu qu’une seule ligne pour faire tous ces affichages, la voici :

C# Entity Framework .NET Tutorial

Traduction :

On donne au DataGridView une liste de produits.

Cette liste de produits est récupérée en créant un objet de base de données

ClientProduitEntities db = new ClientProduitEntities(); Dans mon cas voici l’objet

Et à partir de cet objet, se positionner sur produits, et de retourner ceci sous forme de liste.

Bien entendu les fonctionnalités d’Entity Framework ne s’arrêtent pas là.

dtgEntityProduits.DataSource = db.produits.OrderBy(p => p.prix).ToList();

Cette ligne permet de faire un OrderBy sur le prix du produit, cela donnera donc une liste de produits triés par prix du plus petit au plus élevé

C# Entity Framework .NET Tutorial

L’inverse est possible.

dtgEntityProduits.DataSource = db.produits.OrderByDescending(p => p.prix).ToList();

Il suffit cette fois d’utiliser le mot OrderByDescending.

Les colonnes affichées sont en fait les propriétés qui se situent dans la classe de la table affichée

Par exemple produits avait les propriétés id, libelle, prix, id_CategorieProduit et categorieProduit

Pour le besoin de ce DataGridView, il m’a fallu cacher l’id_CategorieProduit qui ne nous intéresse pas, de cacher également categorieProduit qui affichait un message d’erreur dans le DTG et pour finir de créer moi-même une propriété dans la classe produits pour permettre d’afficher seulement le libelle de la catégorie, j’ai ensuite renommé les header des colonnes pour un meilleur visuel.

Avec Entity Framework il est également possible de faire des ajouts, modifications et suppressions au sein de la base de données.

La capture d’écran ci-dessous montre le peu de ligne de code pour effectuer un ajout.

 

Ajout avec Entity Framework C# .NET :

C# Entity Framework .NET Tutorial

Il suffit de créer un objet de la table dont on veut faire un ajout.

Préciser ses caractéristiques comme nous le faisons avec libelle, libelle reçoit le contenu du textbox saisie par l’utilisateur.

Ensuite depuis l’objet de connexion on va dans la classe souhaitée puis .add() avec l’objet à ajouter entre les parenthèses.

Pour finir il suffit de faire un .SaveChanges()  sur l’objet de connexion, cette méthode est OBLIGATOIRE pour permettre de sauvegarder les changements dans la base de données.

Modification avec Entity Framework C# .NET :

Voici l’exemple de la modification, nous allons modifier un produit.

C# Entity Framework .NET Tutorial

Voici une nouvelle méthode que nous n’avons pas encore vu, la Where(), vous la connaissez surement déjà, elle permet dans notre cas de récupérer un produit dont l’id est égal au numéro indiqué.

La méthode Single() permet de récupérer qu’un seul objet contrairement au ToList() qui renvoyait une liste.

Pour modifier un produit (ou tout autre classe) il suffit de récupérer le produit et de modifier ses caractéristiques directement sur l’objet comme on le fait avec leProduit.libelle, il faut faire ceci pour chaque champs à modifier puis effectuer le SaveChanges() qui sauvegardera la modification.

Suppression avec Entity Framework C# .NET :

La suppression est la plus simple du CRUD à effectuer, voici le code :

C# Entity Framework .NET Tutorial

On récupère le client grâce à la méthode Where et Single

On appelle l’objet de connexion sur la classe client avec la méthode Remove(), dans la méthode Remove() on met le client ou autre objet à supprimer en fonction du besoin.

Et on sauvegarde (OBLIGATOIRE) la base de données tout simplement.

Conclusion

Ayant fait le tour des principales fonctions, je termine donc cette veille technologique, il reste une multitude de choses à apprendre sur Entity Framework je n’en ai montré qu’une infime partie.

Nous pouvons donc conclure que Entity Framework est un moyen très rapide de faire la liaison entre une base de données et un programme, il permet également d’abandonner toutes idées de requêtes SQL et c’est un poids très lourd en moins si un projet comporte une base de données avec des centaines de tables.

 

Annexe des liens utilisés pour construire cette veille technologique sur Entity Framework C# .NET de Microsoft :

https://fr.wikipedia.org/wiki/Mapping_objet-relationnel

http://jbvigneron.fr/2012/06/29/csharp-base-de-donnees-entity-framework-1/

http://jbvigneron.fr/2012/07/10/csharp-acceder-a-une-base-de-donnees-a-l-aide-d-entity-framework-2/

https://en.wikipedia.org/wiki/Entity_Framework

Grâce à tous ces liens et beaucoup de recherches sur internet j’ai réussi à récupérer assez d’informations pour m’auto-former sur cet ORM.