Intégration d'Entity Framework Code First avec MySQL dans ASP.NET MVC

Ce guide présente l'utilisation du mode Code First d'Entity Framework avec une base de données MySQL dans une appplication ASP.NET MVC.

Configruation initiale

Prérequis environnementaux : Windows 8, MySQL 5.5, Visual Studio 2012. Créez d'abord une table dans MySQL avec les colonnes nécessaires.

Définition de l'entité

public class Article
{
    public int ArticleID { get; set; }
    public string Designation { get; set; }
    public string Details { get; set; }
    public decimal Prix { get; set; }
    public string Type { get; set; }
}

Les propriétés doivent correspondre aux champs de la table MySQL.

Interface de dépôt

public interface IDepotArticle
{
    IQueryable<Article> Articles { get; }
}

Implémentation du dépôt

public class DepotArticleEF : IDepotArticle
{
    private ContexteBDD contexte = new ContexteBDD();
    
    public IQueryable<Article> Articles
    {
        get { return contexte.Articles; }
    }
}

Contexte de base de données

public class ContexteBDD : DbContext
{
    public DbSet<Article> Articles { get; set; }
}

Contrôleur MVC

public class ArticleController : Controller
{
    private readonly int elementsParPage = 4;
    private readonly IDepotArticle depot;

    public ArticleController(IDepotArticle depotArticle)
    {
        depot = depotArticle;
    }

    public ViewResult Catalogue(int page = 1)
    {
        return View(depot.Articles
                   .OrderBy(a => a.ArticleID)
                   .Skip((page - 1) * elementsParPage)
                   .Take(elementsParPage));
    }
}

Configuration de l'injection de dépendances

public class FabriqueControleursNinject : DefaultControllerFactory
{
    private IKernel noyau = new StandardKernel();

    public FabriqueControleursNinject()
    {
        ConfigurerLiaisons();
    }

    protected override IController GetControllerInstance(
        RequestContext contexte, Type typeControleur)
    {
        return typeControleur == null ? null : (IController)noyau.Get(typeControleur);
    }

    private void ConfigurerLiaisons()
    {
        noyau.Bind<IDepotArticle>().To<DepotArticleEF>();
    }
}

Chaîne de connexion

<connectionStrings>
  <add name="ContexteBDD" 
       connectionString="Database=nom_bdd;Server=localhost;User ID=root;Password=******"
       providerName="MySql.Data.MySqlClient"/>
</connectionStrings>

Le nom de la chaîne de connexion doit correspondre à la classe de contexte.

Étiquettes: EntityFramework MySQL CodeFirst ASPNETMVC CSharp

Publié le 26 juillet à 17h15