Premiers pas avec Entity Framework

Installation du package NuGet Entity Framework

Dans votre Visual Studio, ouvrez la fenêtre Solution Explorer puis clic droit sur votre projet puis choisissez Manage NuGet Packages dans le menu :

[![Gérer les paquets de nugets][1]][1]

Dans la fenêtre qui s’ouvre, tapez EntityFramework dans le champ de recherche en haut à droite.

[![entrez la description de l’image ici][2]][2]

Ou si vous utilisez Visual Studio 2015, vous verrez quelque chose comme ceci :

[![entrez la description de l’image ici][3]][3]

Cliquez ensuite sur Installer.

Nous pouvons également installer le framework d’entité à l’aide de la console du gestionnaire de packages. Pour ce faire, vous devez d’abord l’ouvrir en utilisant le menu Outils -> NuGet Package Manager -> Package Manager Console puis entrez ceci :

Install-Package EntityFramework

[![entrez la description de l’image ici][4]][4]

Cela installera Entity Framework et ajoutera automatiquement une référence à l’assembly dans votre projet.

[1] : http://i.stack.imgur.com/Wx3Hk.png [2] : http://i.stack.imgur.com/NgmOs.png [3] : http://i.stack.imgur.com/ln0Z9.png [4] : http://i.stack.imgur.com/6iSJR.png

Utilisation d’Entity Framework à partir de C# (Code First)

Le code vous permet d’abord de créer vos entités (classes) sans utiliser de concepteur d’interface graphique ou de fichier .edmx. Il s’appelle Code first, car vous pouvez créer vos modèles first et Entity framework créera automatiquement une base de données en fonction des mappages. Ou vous pouvez également utiliser cette approche avec une base de données existante, qui s’appelle * code d’abord avec la base de données existante * Par exemple, si vous voulez qu’une table contienne une liste de planètes :

public class Planet
{
    public string Name { get; set; }
    public decimal AverageDistanceFromSun { get; set; }
}

Créez maintenant votre contexte qui est le pont entre vos classes d’entités et la base de données. Donnez-lui une ou plusieurs propriétés DbSet<> :

using System.Data.Entity;

public class PlanetContext : DbContext
{
    public DbSet<Planet> Planets { get; set; }
}

Nous pouvons l’utiliser en procédant comme suit :

using(var context = new PlanetContext())
{
    var jupiter = new Planet 
    {
        Name = "Jupiter", 
        AverageDistanceFromSun = 778.5
    };

    context.Planets.Add(jupiter);
    context.SaveChanges();
}

Dans cet exemple, nous créons une nouvelle Planet avec la propriété Name avec la valeur de "Jupiter" et la propriété AverageDistanceFromSun avec la valeur de 778.5

Nous pouvons ensuite ajouter cette Planet au contexte en utilisant la méthode Add() de DbSet et valider nos modifications dans la base de données en utilisant la méthode SaveChanges().

Ou nous pouvons récupérer des lignes de la base de données :

using(var context = new PlanetContext())
{
    var jupiter = context.Planets.Single(p => p.Name == "Jupiter");
    Console.WriteLine($"Jupiter is {jupiter.AverageDistanceFromSun} million km from the sun.");
}

Qu’est-ce qu’Entity Framework ?

L’écriture et la gestion du code ADO.Net pour l’accès aux données est un travail fastidieux et monotone. Microsoft a fourni un cadre O/RM appelé “Entity Framework” pour automatiser les activités liées à la base de données pour votre application.

Le framework Entity est un framework de mappage objet/relationnel (O/RM). Il s’agit d’une amélioration d’ADO.NET qui offre aux développeurs un mécanisme automatisé pour accéder et stocker les données dans la base de données.

Qu’est-ce que l’O/RM ?

ORM est un outil pour stocker des données d’objets de domaine dans la base de données relationnelle comme MS SQL Server, de manière automatisée, sans trop de programmation. O/RM comprend trois parties principales :

  1. Objets de classe de domaine
  2. Objets de base de données relationnelle
  3. Mappage des informations sur la façon dont les objets du domaine sont mappés aux objets de la base de données relationnelle (e.x tables, vues et procédures stockées)

ORM nous permet de garder notre conception de base de données séparée de notre conception de classe de domaine. Cela rend l’application maintenable et extensible. Il automatise également les opérations CRUD standard (créer, lire, mettre à jour et supprimer) afin que le développeur n’ait pas besoin de l’écrire manuellement.