12.07.2013 Views

Etude exploratoire de Linq - CoDE - de l'Université libre de Bruxelles

Etude exploratoire de Linq - CoDE - de l'Université libre de Bruxelles

Etude exploratoire de Linq - CoDE - de l'Université libre de Bruxelles

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Une relation est un lien entre <strong>de</strong>ux entités ou plus. Il s’agit là <strong>de</strong>s mêmes concepts que ceux présents<br />

dans le fameux schéma entités-relations. Une relation peut être <strong>de</strong> diverses multiplicités : un à un, un<br />

à plusieurs ou plusieurs à plusieurs. Une relation peut elle-même possé<strong>de</strong>r <strong>de</strong>s attributs et est donc<br />

représentée par une classe.<br />

Un objet contexte, ou context object en Anglais, est le terme pour désigner la classe en charge <strong>de</strong> la<br />

gestion du modèle. La classe ou plutôt un <strong>de</strong> ses objets. Ce rôle s’apparente fort à celui du<br />

DataContext <strong>de</strong> <strong>Linq</strong> to Sql et cet objet contexte gère à la fois le mapping et les instanciations<br />

d’entités et <strong>de</strong> relations. Un seul objet contexte peut exister pour un modèle donné. Il intercepte<br />

toutes les <strong>de</strong>man<strong>de</strong>s, qu’elles soient faites aux entités, aux relations ou au modèle lui-même. L’objet<br />

contexte est le point d’entrée <strong>de</strong> la couche <strong>de</strong>s services objets (c’est ainsi qu’il est présenté dans la<br />

documentation officielle fournie par Microsoft [5]).<br />

Le modèle <strong>de</strong> données, appelé Entity Data Mo<strong>de</strong>l ou EDM par Microsoft, regroupe les entités et leurs<br />

relations. C’est en quelque sorte un schéma entités-relations mais les données peuvent y être<br />

spécifiées déjà finement, notamment au niveau <strong>de</strong>s types. Ce modèle peut être créé <strong>de</strong>puis une base<br />

<strong>de</strong> données disposant d’un schéma entités-relations. Il peut également être créé à la main ou <strong>de</strong>puis<br />

la structure <strong>de</strong> tables relationnelles d’une base <strong>de</strong> données. Dans tous les cas, <strong>de</strong>s modifications sont<br />

toujours possibles à postériori.<br />

Le fonctionnement général d’EF est le suivant : l’application utilise <strong>de</strong>s concepts dont la forme<br />

correspond à la logique <strong>de</strong> l’application. Cet assemblage d’objets est manipulé directement en<br />

mémoire et aucune interférence due à la couche relationnelle n’a lieu à ce niveau. Il n’y a que les<br />

entités et relations ayant un rôle à jouer qui sont instanciées, les autres disparaissent dès leur rôle<br />

terminé. L’objet contexte ne maintient que le minimum d’objets nécessaires. Lorsque ceux-ci<br />

nécessitent un rafraîchissement ou lorsqu’ils font l’objet d’une <strong>de</strong>man<strong>de</strong> d’écriture, l’objet contexte<br />

va utiliser les informations <strong>de</strong> mapping à sa disposition pour créer les comman<strong>de</strong>s Sql appropriées.<br />

Sql étant <strong>de</strong>venu standard (ou presque), la seule question délicate est <strong>de</strong> gérer l’accès direct aux<br />

données. Là et seulement là, le mapping contient <strong>de</strong>s informations qui seront dépendantes <strong>de</strong> la<br />

nature <strong>de</strong> la base <strong>de</strong> données. Ces informations sont utilisées pour créer <strong>de</strong>s connexions et <strong>de</strong>s<br />

comman<strong>de</strong>s avec la couche ADO.NET classique, c’est-à-dire telle qu’elle permet déjà <strong>de</strong> le faire<br />

<strong>de</strong>puis la version 2 du framework .NET. Un changement du mo<strong>de</strong> <strong>de</strong> stockage <strong>de</strong>s données impose<br />

<strong>de</strong> seulement changer quelques lignes au niveau du mapping. Les informations <strong>de</strong> structure pouvant<br />

être utilisée pour recréer <strong>de</strong>s tables relationnelles en correspondance avec le mapping actuel. Voici<br />

le principe <strong>de</strong> l’Entity Framework.<br />

4.4.3 Mapping<br />

Le mapping est réalisé <strong>de</strong> manière distribuée, dans le sens où plusieurs fichiers y participent, chacun<br />

apportant <strong>de</strong>s informations différentes. Sans entrer dans les détails <strong>de</strong> leur syntaxe, un premier<br />

fichier représente la structure <strong>de</strong>s entités et relations, un <strong>de</strong>uxième fichier représente la structure<br />

<strong>de</strong>s données au niveau <strong>de</strong> la source relationnelle et le troisième fichier fait la correspondance entre<br />

les <strong>de</strong>ux [5]. Ceci se fait (presque) indépendamment <strong>de</strong> la nature <strong>de</strong> la base <strong>de</strong> données et la<br />

structure <strong>de</strong> cette <strong>de</strong>rnière peut être récupérée ou recréée à l’envie. A l’envie signifie dans la limite<br />

où ce type <strong>de</strong> base <strong>de</strong> données est supporté par EF sans quoi ces étapes doivent être faites à la main.<br />

Ceci est d’autant plus intéressant que le développeur n’a pratiquement aucune ligne <strong>de</strong> co<strong>de</strong> à écrire<br />

pour réaliser ce fameux mapping, un éditeur <strong>de</strong> modèle EDM graphique est fourni avec EF.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!