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.