• Aucun résultat trouvé

Entity Framework 5 Code First

N/A
N/A
Protected

Academic year: 2022

Partager "Entity Framework 5 Code First"

Copied!
6
0
0

Texte intégral

(1)

Introduction par l'exemple à Entity Framework 5 Code First

serge.tahe at istia.univ-angers.fr octobre 2012

(2)

Table des matières

1

INTRODUCTION ... 4

1.1 OBJECTIF...4

1.2 LESOUTILSUTILISÉS...5

1.3 LESCODESSOURCE...5

1.4 LAMÉTHODE...6

1.5 PUBLICVISÉ...7

1.6 ARTICLESCONNEXESSURDEVELOPPEZ.COM...8

2 L'ÉTUDE DE CAS ... 9

2.1 LEPROBLÈME...9

2.2 LABASEDEDONNÉES...13

2.2.1 LATABLE [MEDECINS]...13

2.2.2 LATABLE [CLIENTS]...13

2.2.3 LATABLE [CRENEAUX]...14

2.2.4 LATABLE [RV]...14

3 ETUDE DE CAS AVEC SQL SERVER EXPRESS 2012 ... 16

3.1 INTRODUCTION...16

3.2 INSTALLATIONDESOUTILS...16

3.3 LESERVEUREMBARQUÉ (LOCALDB)\V11.0...22

3.4 CRÉATIONDELABASEÀPARTIRDESENTITÉS...23

3.4.1 L'ENTITÉ [MEDECIN]...25

3.4.2 L'ENTITÉ [CRENEAU]...31

3.4.3 LESENTITÉS [CLIENT] ET [RV]...35

3.4.4 FIXERLENOMDELABASE...38

3.4.5 REMPLISSAGEDELABASE...39

3.4.6 MODIFICATIONDESENTITÉS...42

3.4.7 AJOUTERDESCONTRAINTESÀLABASE...43

3.4.8 LABASEDÉFINITIVE...47

3.5 EXPLOITATIONDELABASEAVEC ENTITY FRAMEWORK...50

3.5.1 SUPPRESSIOND'ÉLÉMENTSDUCONTEXTEDEPERSISTANCE...50

3.5.2 AJOUTD'ÉLÉMENTSAUCONTEXTEDEPERSISTANCE...53

3.5.3 AFFICHAGEDUCONTENUDELABASE...55

3.5.4 APPRENTISSAGEDE LINQ AVEC LINQPAD...61

3.5.5 MODIFICATIOND'UNEENTITÉATTACHÉEAUCONTEXTEDEPERSISTANCE...73

3.5.6 GESTIONDESENTITÉSDÉTACHÉES...75

3.5.7 LAZYET EAGER LOADING...79

3.5.8 CONCURRENCED'ACCÈSAUXENTITÉS...82

3.5.9 SYNCHRONISATIONDANSUNETRANSACTION...87

3.6 ETUDED'UNEARCHITECTUREMULTI-COUCHES'APPUYANTSUR EF 5...90

3.6.1 LENOUVEAUPROJET...90

3.6.2 LACLASSE EXCEPTION...91

3.6.3 LACOUCHE [DAO]...92

3.6.4 TESTDELACOUCHE [DAO]...100

3.6.5 CONFIGURATIONDE SPRING.NET...103

3.6.6 GÉNÉRATIONDELA DLL DELACOUCHE [DAO]...108

3.6.7 LACOUCHE [ASP.NET]...109

3.7 CONCLUSION...113

4 ETUDE DE CAS AVEC MYSQL 5.5.28 ... 114

4.1 INSTALLATIONDESOUTILS...114

4.2 CRÉATIONDELABASEÀPARTIRDESENTITÉS...115

(3)

7.2 CRÉATIONDELABASEÀPARTIRDESENTITÉS...158 7.3 ARCHITECTUREMULTI-COUCHES'APPUYANTSUR EF 5...165 8

CONCLUSION ... 169

(4)

1 Introduction

1.1 Objectif

Entity Framework est un ORM (Object Relational Mapper) initialement créé par Microsoft et maintenant disponible en open source [juillet 2012, http://entityframework.codeplex.com/]. Dans un cours ASP.NET j'utilise l'architecture suivante pour une certaine application web :

Le framework NHibernate [http://sourceforge.net/projects/nhibernate/] est un ORM apparu avant Entity Framework. C'est un produit mature permettant de se connecter à diverses bases de données. L'ORM isole la couche [DAO] (Data Access Objects) du connecteur ADO.NET. C'est l'ORM qui émet les ordres SQL à destination du connecteur. La couche [DAO] utilise elle l'interface offerte par l'ORM. Celle-ci dépend de l'ORM. Ainsi changer d'ORM implique de changer la couche [DAO].

Cette architecture résiste bien aux changements de SGBD. Lorsqu'on relie la couche [DAO] directement au connecteur ADO.NET, changer de SGBD a un impact sur la couche [DAO] :

les SGBD n'ont pas tous les mêmes types de données ;

les SGBD n'ont pas les mêmes stratégies de génération des clés primaires ;

les SGBD ont du SQL propriétaire ;

la couche [DAO] a pu utiliser des bibliothèques liées à un SGBD précis ;

...

Lorsque c'est un ORM qui est relié au connecteur ADO.NET, changer de SGBD revient à changer la configuration de l'ORM pour l'adapter au nouveau SGBD. La couche [DAO] ne change pas.

Le framework Spring.NET [http://www.springframework.net/index.html] assure l'intégration des couches d'une application. Ci- dessus :

l'application ASP.NET demande à Spring une référence sur la couche [DAO] ;

Spring exploite un fichier de configuration pour créer cette couche et en rendre la référence.

Cette architecture résiste bien aux changements de couches tant que celles-ci présentent toujours la même interface. Changer la couche [DAO] ci-dessus, consiste à changer le fichier de configuration de Spring pour que la nouvelle couche soit instanciée à la place de l'ancienne. Comme celles-ci implémentent la même interface et que la couche ASP.NET utilise cette interface, la couche ASP.NET reste inchangée.

On a donc là une architecture souple et évolutive. Pour le montrer, nous allons remplacer l'ORM NHibernate par Entity Framework 5 :

1 2

BD Couche d'accès

aux données [DAO1]

Connecteur

[ADO.NET] SGBD

Application ASP.NET

Framework [NHibernate]

SPRING

(5)

on connectera l'application ASP.NET existante à cette nouvelle couche [DAO].

1.2 Les outils utilisés

Les tests ont été réalisés sur un portable HP EliteBook avec Windows 7 pro, un processeur Intel Core i7, 8 Go de RAM. Nous utiliserons C# comme langage de développement.

Le document utilise les outils suivants tous disponibles gratuitement : Les IDE de développement :

Visual Studio Express pour le bureau 2012 [http://www.microsoft.com/visualstudio/fra/downloads] ;

Visual Studio Express pour pour le web 2012 [http://www.microsoft.com/visualstudio/fra/downloads].

Le SGBD SQL Server Express 2012 :

le SGBD : [http://www.microsoft.com/fr-fr/download/details.aspx?id=29062] ;

un outil d'administration : EMS SQL Manager for SQL Server Freeware [http://www.sqlmanager.net/fr/products/mssql/manager/download].

Le SGBD Oracle Database Express Edition 11g Release 2 :

le SGBD : [http://www.oracle.com/technetwork/products/express-edition/downloads/index.html] ;

un outil d'administration : EMS SQL Manager for Oracle Freeware [http://www.sqlmanager.net/fr/products/oracle/manager/download] ;

un client Oracle pour .NET : ODAC 11.2 Release 5 (11.2.0.3.20) with Oracle Developer Tools for Visual Studio : [http://www.oracle.com/technetwork/developer-tools/visual-studio/downloads/index.html].

Le SGBD MySQL 5.5.28 :

le SGBD : [http://dev.mysql.com/downloads/] ;

un outil d'administration : EMS SQL Manager for MySQL Freeware [http://www.sqlmanager.net/fr/products/mysql/manager/download].

Le SGBD PostgreSQL 9.2.1 :

le SGBD : [http://www.enterprisedb.com/products-services-training/pgdownload#windows] ;

un outil d'administration : EMS SQL Manager for PostgreSQL Freeware [http://www.sqlmanager.net/fr/products/postgresql/manager/download].

Le SGBD Firebird 2.1 :

le SGBD : [http://www.firebirdsql.org/en/firebird-2-1-5/] ;

un outil d'administration : EMS SQL Manager for InterBase/Firebird Freeware [http://www.sqlmanager.net/fr/products/ibfb/manager/download].

LINQPad 4 : un outil d'apprentissage de LINQ (Language INtegrated Query) [http://www.linqpad.net/, http://www.linqpad.net/GetFile.aspx?LINQPad4.zip].

1.3 Les codes source

Les codes source des exemples qui vont suivre sont disponibles à l'URL [http://tahe.developpez.com/dotnet/ef5cf].

(6)

Cliquez ici pour telecharger le PDF complet

Références

Documents relatifs

• In the section “Add Models to Doctrine”, create a YAML description of the News item entity instead of the two entities of the tutorial (in the YAML markup, make sure to use a

ORM 2 provides languages and procedures for mod- eling and querying information systems at a conceptual level as well as map- ping procedures for transforming between ORM

Mais cette recherche de sens « se pose de plus en plus souvent, auprès de plus en plus de monde, et avec de plus en plus d'acuité ».. Même si, nuance-t- il, changer radicalement de

Depuis  quelques  années,  de  nouvelles  approches  du  stockage  et  de  la  gestion  des  données  sont  apparues,  qui  permettent  de  s’astreindre 

▶ Hibernate allows arbitrary names for identifiers (function and argument names). ▶ Hibernate allows Unicode symbols

La commande suivante exécutée dans la calculette SQL permet de voir le contenu de DATADIR : Mysql > show variables like ‘%dir%’

faire une très belle pièce. Que toutes les angoisses par lesquelles on passait, étaient tout à fait normales et que même les profes- sionnels en vivaient des

Pendant l'heure de dessin que j'ai avec cette classe, ils illus trent soit l'affiche, soit de s textes per- sonnels non ret enus pour l'affi che.. Les documents qui