Entity Framework : Code First avec Migration 1/2

Entity Framework est pour rappel un ORM (Object RelationShip Manager) qui permet de faire :

  • Le mapping entre la base de données et les classes Entités
  • De proposer les méthodes du CRUD (Create Read Update Delete)

Il existe 3 workflows :

  • dataBase First
  • Model First
  • Code First

Lors de la création d’un projet MVC 4 dans Visual Studio 2012 , EF 5 est intégré par défaut
Cet article a pour but d’expliquer comme implémenter Entity Framework en utilisant le workflow Code First (et générer la base de données)

  1. Code First

    Le workflow Code First consiste à écrire comme son nom l’indique en 1er les classes entités (qui représentent le Model) puis:

  • soit de faire le mapping avec une base de données déjà existante
  • soit à partir de ces dernières de générer la base de données.
    1. Les classes Entités (Model)

      Dans notre exemple nous travaillons sur une application simple de gestion de Music (Music Store)
      Nous notre projets MVC dans le répertoire Models nous allons créer 2 classes qui représentent nos entités comme suit :

      Album.cs

      Genres.cs

    2. La classe de mapping (DbContext)

      Dans Models on crée une classe MvcMusicStoreEntities.cs qui hérite de DbContext, ça représente notre DBcontext



      Dans notre exemple on a fait le mapping :

      Table Albums –> classe Album

      Table Genres –> classe Genre

  1. La chaine de connexion

    Dans le fichier web.config, mettre la bonne chaine de connexion
    Dans <connectionSring>

    Exemple:

    <add name= »MvcMusicStoreEntities » connectionString= »Data Source=.\sqlexpress;Initial Catalog=MusicStore;Integrated Security=True » providerName= »System.Data.SqlClient » />
    Comme on peut le remarquer le nom de la chaine de connexion « MvcMusicStoreEntities » correspond au nom du DBContext

    Arrivé à ce point, si la base MusicStore existe déjà, EF est implémenté, et on peut commencer à l’utiliser.

    Par contre si notre but est de générer la base à partir du model, c’est allons utiliser EF Migration comme suit.

  2. Activer la migration

    La toute 1ere fois, il faut activer la migration sur le projet.

    Pour ceci dans la console Package Manager, lancer la commande

    enable-migrations en lui précisant le nom du context avec -ContextTypeName en argument

    enable-migrations -ContextTypeName MvcMusicStoreEntities


    Cette commande a créé un fichier configuration.cs ainsi qu’un répertoire Migration

     

    Ce fichier va contenir la configuration des migrations.
    Remarque : si la base de données existait déjà, un fichier InitialCreate est créé en même temps que la configuration. Sinon il faudra le crée avec 1ere migration

  3. Créer une migration

    Le terme de migration désigne le fait de mettre à jour la base de donnée en fonction d’un Model (entités)
    Pour créer une migration on lance dans le package manager la commande : add-migration « Nomdela migration »
    Exemple dans notre projet on lance add-migration InitialCreate



    Cette commande a créer un fichier dans le répertoire Migration, ce fichier est nommé avec le nom de la migration qui a été utilisé avec add-migration


    Il contient le code qui va permettre de générer les éléments du model

  4. Mettre à jour la base de données

    Pour appliquer les mises à jour en attentes il faut exécuter la commande update-database




    On peut donc voir que les 2 tables ont été crééent.

    La table _MigrationHistory historise les migrations, afin que lors des prochaines migrations ce ne sont que les changements sur la bases qui sont appliqués.
    Exemple : dans Album on rajoute la propriété NbTracks


    On lance la commande add-migration AddNbTracks





    Puis on met à jour la base de données avec update-database


    Remarque sur la commande update-database:

    Cette commande possède 2 arguments facultatifs:

    -verbose : permet de voir les détails de ce qui est appliqué sur la base de données

    -script : permet de générer un fichier sql avec le script qui permet d’appliquer les changements, dans ce cas les changements ne sont pas appliqué automatiquement sur la base.

    Dans un 2eme post nous verrons comment migrer les données avec la migration et comment rendre la migration automatique.

 

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s