Bien débuter avec l'entity framework
Depuis plusieurs mois, je vous parle de l'entity framework. Le problème quand on commence à bien maîtriser une techno c'est qu'on a tendance à parler de concepts comme s'ils étaient acquis pour tout le monde ce qui n'est pas toujours le cas.
Ce post a donc pour but de récapituler un certain nombre de notions basiques.
L'Entity Framework est un outil de Mapping Objet Relationnel développé par Microsoft qui paraîtra en version 1 avec le SP1 de VS 2008.
Le mapping proposé par l'Entity Framework n'est pas un mapping 1->1 comme avec LINQ To SQL mais un mapping beaucoup plus puissant. AFin de définir ce mapping, l'Entity Framework introduit la notion d'Entity Data Model (EDM).
L'EDM se décompose en 3 parties :
- la description de la base de données (SSDL)
- la description des entités (CSDL)
- la description du mapping entre les deux (MSL)
Quand on veut utiliser l'entity framework, on rajoute un item de type ADO.NET Entity Data Model qui va générer un fichier edmx à notre solution avec un fichier .designer.cs / vb lié.
Ce fichier edmx contient les 3 parties d'EDM plus une 4ème partie nettement moins intéressante : la position des entités et des relations dans le designer.
Lors de la compilation chacune des 3 parties est éclatée en un fichier situé dans le répertoire bin\Debug / Release.
L'entity framework supporte n'importe quel système de persistance à condition d'avoir le provider. Par défaut MS fournit ceux pour SQL Server. Pour plus d'infos sur les providers disponibles, consultez le post de l'ADO .Net Team.
La chaîne de connection est différente des chaînes de connections telle qu'on les connaissait avec les versions précédentes. En effet, elles incluent en plus, le chemin du ssld, du csdl, du msl et le provider à utiliser.
Au niveau du mapping, il y a plusieurs manipulations possibles. Pour plus d'infos à ce sujet, je vous invite à consulter mon article.
L'Entity Framework supporte LINQ avec LINQ To Entities. Les requêtes LINQ sont traduites en ESQL. ESQL est un nouveau langage introduit par l'Entity Framework. Chaque provider doit être capable de traiter le ESQL. Il est possible d'écrire les requêtes directement en ESQL à la place de LINQ To Entities mais cela revient à perdre les avantages de LINQ : vérification à la compilation, intellisence. Cependant dans certains cas, cela peut s'avérer très pratique.
Avec l'Entity Framework, tout se fait à partir d'un ObjectContext. L'ObjectContext va nous permettre d'exécuter nos requêtes, de tracker les changements et de faire la persistance en base.
Daniel Simmons a enregistré une émission très basique sur l'Entity Framework pour dnrTV que je vous conseille bien évidemment de visionner.
Pour plus d'info, je vous invite à consulter la FAQ.
Si vous avez des questions, le forum msdn est très réactif. Vous pouvez aussi me poser vos questions en utilisant les commentaires.
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :