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
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.