Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

Matthieu MEZIL

I love .Net

Abonnements

Actualités

Locations of visitors to this page English blog

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 :

Publié mercredi 16 juillet 2008 19:30 par Matthieu MEZIL

Classé sous : , , ,

Commentaires

# re: Bien débuter avec l'entity framework @ mercredi 16 juillet 2008 21:46

Bon j'ai pas lu tous les article que tu pointe donc je vais peut être posé une question à coté de la plaque. Mais d'après ce que j'en comprend on pourrais imaginer des entités qui par exemple proviendrais d'une relation d'héritage de table?

Exemple : Une table Individus (contient nom, adresse,...) des tables fournisseurs, clients, employés héritant d'Individus. On pourrait définir nos entités comme étant la synthèse de chaque relation d'héritage alors qu'en Linq To SQL de mémoire on est obligé de passé par des accesseur pour obtenir l'instance de la classe représentant le champ dans la table mère.

Tu peux confirmer?

Sinon il y a quelque infos qui circulent en ce moment pour la sortie du SP1? (on avait parlé de "Summer 2008" à une époque me semble).

(Bon dés que j'ai occasion je me monte une vpc avec vs2008 en anglais pour tester la béta)

wizad

# re: Bien débuter avec l'entity framework @ jeudi 17 juillet 2008 01:00

Hello,

je suis ton blog et c'est un plaisir de te lire.

Concernant le SP1 version finale, on a une date aproximative ?

Que faut-il d'installé sur le serveur de prod pour faire tourner Entity Framework en l'état actuel des choses ?

pyramid06

# re: Bien débuter avec l'entity framework @ jeudi 17 juillet 2008 09:24

@pyramid06 :

le SP1 est en cours de finalisation... je pense qu'il devrait être disponible bientôt...

Quant à l'utilisation de Entity Framework : il suffit (si mes souvenirs sont bons) d'installer le framework .net 3.5 sur le serveur.

sebmafate

# re: Bien débuter avec l'entity framework @ jeudi 17 juillet 2008 09:49

@wizad: Oui je confirme, tu peux faire de "l'héritage de table", ce que l'on appelle TPT en Entity Framework (Table Per Type). En LINQ To SQL, le seul héritage possible est le TPH (Table Per Hierarchy) avec une colonne discriminante en base. Contrairement à LINQ To SQL, avec l'Entity Framework, le discriminant peut comporter plusieurs colonnes. Cependant les relations d'héritage ne sont pas les seules manipulations possibles...

@pyramid06 : Merci.

La date approximative est sous NDA, aussi je n'en dirai pas plus. Regarde la réponse de seb.

Pour utiliser l'entity framework actuellement, il suffit d'installer VS 2008 SP1 sur ta machine de dev. Pour le serveur de prod, il faut .Net 3.5 plus les dlls spécifiques à l'entity framework : System.Data.Entity et System.Web.Entity si tu utilises le contrôle EntityDataSource.

Matthieu MEZIL

Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- Sortie de Silverlight 2 et de Flash player 10 par Nix's Blog le il y a 9 heures et 13 minutes

- TCB : Que faire en salle blanche ? par The Mit's Blog le il y a 10 heures et 33 minutes

- Debug : Make Object ID - Comment connaitre l'état d'une variable lorsque celle-ci n'est pas accessible dans le scope courant par Atteint de JavaScriptite Aiguë [Cyril Durand] le il y a 23 heures et 30 minutes

- IIS7 : Configuration des handlers pour l'upload de fichier - interdire certains fichiers de s'exécuter | accéder à des fichiers .cs, .aspx par Atteint de JavaScriptite Aiguë [Cyril Durand] le 10-14-2008, 19:49

- Microsoft annonce le nom commercial de Windows 7 par Code is poetry le 10-14-2008, 12:07

- [Silverlight] Téléchargez la version finale (et les outils associés) dès maintenant ! par Thomas Lebrun le 10-14-2008, 10:37

- Vilain bug avec IQueryable et la syntaxe yield : System.BadImageFormatException "An attempt was made to load a program with an incorrect format. (Exce... par Matthieu MEZIL le 10-14-2008, 07:48

- SQL Server 2008 : Un livre en cours de préparation ! par SQL Server vu par Christian Robert le 10-13-2008, 22:56

- IIS7 : à quel pool d'application correspond le processus w3wp.exe par Atteint de JavaScriptite Aiguë [Cyril Durand] le 10-13-2008, 21:59

- PDC 2008 - J-14 ! par Nix's Blog le 10-13-2008, 20:14