C# / Accéder à une base de données à l’aide d’Entity Framework (1/2)

Dans cet article, je vous montrais comment établir la connexion entre une base de données (SQL Server, MySQL Oracle…) et une application .NET.

Cette méthode fonctionne très bien cependant, elle comporte également des défauts.
Si l’on veut déjà commencer par bien faire les choses, on peut créer des classes pour chaque table de la base avec des méthodes pour lire, ajouter, modifier ou supprimer des données. Chaque méthode comporterait la/les requête(s) SQL nécessaires…

Et si notre base contient 150 tables, on doit donc créer 150 classes donc 750 méthodes ???
C’est là où Entity Framework intervient puisque c’est lui qui va faire tout le boulot à notre place mais pas que…

Présentation d’Entity Framework

Entity Framework, que j’appellerai Entity tout au long, est un ORM open-source proposé par Microsoft permettant d’interagir avec un grand nombre de SGBD.
Entity gère nativement SQL Server et SQL Server Compact. Vous retrouverez d’autres SGBD supportés avec par exemple des connecteurs pour MySQL, Oracle. La liste des fournisseurs de données pour Entity est sur MSDN.
Ces connecteurs s’intègrent généralement de façon automatique à Visual Studio.

Quel est l’intérêt d’utiliser Entity ?

Entity mappe votre base de données à des objets. Fini les requêtes SQL, votre base de données et vos tables deviennent désormais des objets manipulables !

Exemple:

Mapper une liste de Personne { code, nom, prenom } à un objet ListBox:

listbox.ItemsSource = db.Personne;

Une seule ligne ! Pour afficher la liste des personnes contenues dans la table Personne.

Comment le mettre en place ?

Entity est disponible pour les projets Desktop (WPF, Windows Forms), ASP.NET et WCF notamment. En revanche, il ne l’est pas pour les projets de type clients légers comme Windows Phone, Silverlight ou Windows 8 RT. Il vous faudra passer par une couche intermédiaire telle une bibliothèque de classes ou un webservice.

Nous allons donc mettre en place notre modèle Entity en le créant à l’aide la base de données (approche « Database First »).

Dans mon exemple, j’utilise une base MySQL locale nommée ecommerce contenant 4 tables: client, commande, produit et commande_produit.

Dans votre projet, cliquez-droit sur Ajouter > Nouvel élément.Ajouter un nouveau modèle d'entité de données
Choisissez Générer depuis la base de données. Sur l’écran suivant, vous pouvez apercevoir une liste de connexions de données. Si elle est vide, cliquez sur Nouvelle connexion…
Choix de la source de données

Vous voyez dans cette liste que j’ai installé MySQL Net Connector

Cliquez sur Continuer et remplissez les informations de connexion à votre base de données. Pensez à tester la connexion 😉

Vous revenez ensuite sur l’écran précédent où apparait la chaîne de connexion générée avec les informations que vous venez de rentrer.Générer les entités Entity Framework
Cette chaîne de connexion sera stockée dans le fichier de configuration App.config ou Web.config (selon le type d’application). L’assistant vous demande si vous souhaitez stocker le mot de passe également dans ce fichier ou si vous préférez l’intégrer dans votre code. C’est à vous de voir.

Avantages Inconvénients
Dans le fichier de configuration Dans le cas d’un changement de mot de passe, il suffit de modifier le fichier de configuration Le fichier de configuration est visible par tous
Dans le code Le mot de passe est compilé donc invisible Dans le cas d’un changement de mot de passe, il vous faudra recompiler toute l’application

Choisissez un nom clair pour vos entités (ou laissez tel) et cliquez sur Suivant. L’assistant vous demande à présent quelles tables, vues, et procédures stockées vous souhaitez intégrer.C'est ici que vous ajoutez vos tables, vues ou procédures stockées
Dans ce tuto, je n’aborderai que l’utilisation des tables. Cochez-les (vous n’êtes pas obligé de toutes les sélectionner) et cliquez sur Terminer.

Et voilà le résultat !

L’assistant nous a créé un fichier *.edmx contenant les entités représentant les tables de notre bases de données. Visual Studio nous les représente à l’aide d’un schéma UML.Visual Studio nous crée un fichier *.edmx représenté par un schéma UML

Maintenant que fait-on ?

Doucement doucement ! Je vous explique ça dans la seconde partie de mon tuto.

Lien Permanent pour cet article : https://www.jbvigneron.fr/parlons-dev/csharp/csharp-base-de-donnees-entity-framework-1/

2 Commentaires

2 pings

  1. Bonjour M. Vigneron,
    Je découvre Entity Framework C#.
    Dans votre tuto du 10/07/2012 au paragraphe « Ajouter une entrée dans une table » vous utilisez une méthode à la ligne 10 du code « db.client.AddObject(cli); », mai je ne trouve nulle part le code de AddObject().
    Auriez vous l’amabilité de me dire ce qu’il y lieu de faire ou bien où trouver cette information.
    Avec mes remerciements anticipés recevez mes salutations cordiales.

    • Cissé Aboubacar sur 24 décembre 2023 à 2h16
    • Répondre

    Comment ajouter mysql net connector afin que je puisse accéder à mes bases de données mysql via entity data model.

    Merci d´avance !

  1. […] C# / Accéder à une base de données à l'aide d'Entity Framework (1/2) – Jean-Baptiste VIG…. Dans cet article, je vous montrais comment établir la connexion entre une base de données (SQL Server, MySQL Oracle…) et une application .NET. Cette méthode fonctionne très bien cependant, elle comporte également des défauts. Si l’on veut déjà commencer par bien faire les choses, on peut créer des classes pour chaque table de la base avec des méthodes pour lire, ajouter, modifier ou supprimer des données. […]

  2. […] moyen de vous connecter à une base de données, je vous conseille plutôt de lire ce tutoriel sur la liaison à une base avec Entity Framework, offrant la possibilité d’interagir sans utiliser de requêtes SQL. Je laisse juste […]

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée.

Verified by MonsterInsights