Entity Framework : Code First avec Migration 2/2

La 1ère partie de l’article concernait l’implémentation de Code First Migration.

Dans cette 2ème partie d’article sur La migration Entity Framework, nous allons voir:

  • Comment insérer ou mettre à jour des données en même temps que les changements de la structure de la base de données.
  • Configurer la migration pour qu’elle s’effectue automatiquement.
  1. Migration sur les données

    Dans la classe de configuration qui a été créé lors de l’activation de la migration, il y a une méthode Seed (créé par défaut) qui va permettre d’insérer des données.

    En effet lors des migrations il se peut que le (ou les) tables doivent être détruites pour être reconstruite, donc éviter de perdre des données il est possible de insérer dans la configuration de migration.

    Pour cela il faut utiliser la méthode AddOrUpdate qui a pour avantage de ne pas faire uniquement des insert mais s’il l’enregistrement existe déjà elle fera un update (ca évide donc d’avoir des doublons).


    Il y aussi une autre possibilité c’est d’utiliser un script SQL, et de l’exécuter dans la méthode seed, par exemple :

  2. Migration automatique

    La migration automatique permet d’appliquer automatiquement les changements à la base de données lors de l’exécution de l’application.

    Pour l’activer il faut:

  • modifier la propriétés AutomaticMigrationsEnabled et la renseigner à true, et rajouter une autre propriété AutomaticMigrationDataLossAllowed = true car la migration automatique ne permet pas la perte de données. On a donc dans la configuration :


  • Implémenter la méthode OnModelCreating:

    Dans la classe configuration il faut rajouter une méthode OnModelCreating avec :

    Database.SetInitializer(new MigrateDatabaseToLatestVersion<MvcApplicationEFCodeFirst.Models.MvcMusicStoreEntities, Configuration>());

    Ce qui nous donne:


Et voilà lors de l’exécution de l’application, la base de données sera mise à jour à partir du model.
Remarques sur la migration automatique:
La migration automatique peut se révéler pratique dans un cadre de développement, par contre à mon sens elle n’est pas à être utilisée en production car lors de modification de la base des données peuvent être perdues.

Utilisation de Log4net dans un projet MVC

Dans ce post je vais vous montrer comment implémenter un mécanisme de log dans des fichiers textes avec la librairie log4net et ceci très rapidement.

Récupération de Log4net

Dans le package manager on récupère le package log4net, soit via le Manager de packages Nuget


Soit via le Package Manager Console en lancer la commande:
Install-Package log4net

La dll est alors importée dans les références



Configuration

Pour modifier le fichier web.config qui va contenir la config de log4net pour écrire dans un fichier texte on va récupérer un autre package nuget

Log4net RollingFileAppender

Ou

Install-Package log4net.samples.rollingfileappender

Dans notre fichier Web.config, on a bien


Il faut modifier la valeur de <file value…> avec le chemin du fichier de log.

Exemple :



Global.Asax

Dans le fichier global.asax dans la méthode Application_Start , il faut rajouter

log4net.Config.XmlConfigurator.Configure();

Cela permet de cabler log4net avec la config établie dans le web.config
Controller

Dans le controller dans lequel on désire utiliser log4net,

On déclare une variable

private log4net.ILog log = log4net.LogManager.GetLogger(typeof(HomeController));

Puis dans la methode (Action) pour écrire le log
//exemple debug
log.Debug("Ceci est un log de Debug");
//exemple information
log.Info("Ceci est un log d'information");

Test

Pour
tester on execute notre page , et on voit bien le fichier de log


Et son contenu


Voila on vient de mettre en place un système log dans un fichier texte très rapidement.

Voir aussi:

http://www.codeproject.com/Articles/140911/log-net-Tutorial
http://www.codeproject.com/Articles/34287/log-net-C-Code-Snippets