Entity Framework et autres plateformes
La plupart des applications utilisent beaucoup les bases de données relationnelles. Les développeurs ont besoin d'un modèle de données qui connecte du code d'application à des structures de stockage.
Le modèle EDM (Modèle de données d'entité) prend en charge des scénarios d'application sur différents modèles de stockage et mappe à la fois au CLR et à des systèmes de gestion de base de données tels que SQL Server. Le mappage au CLR est requis pour des besoins de programmabilité, et le mappage à des bases de données relationnelles est requis pour des besoins de persistance. Depuis l'introduction du modèle EDM, ADO.NET fournit une plateforme complète pour le mappage de types programmables au stockage.
Il existe au moins quatre plateformes existantes qui sont adaptées au nouveau modèle de données :
SQL Server
CLR (Common Language Runtime)
Langage UML
Langage XSD (XML Schema Definition)
Aucune des plateformes existantes ne répond aux besoins des applications de données.
SQL Server ne fournit pas une intégration aisée aux langages de programmation. Ses requêtes textuelles sont souvent lourdes dans du code. Les tables de base de données modélisent les relations à l'aide de clés étrangères. SQL ne peut pas modéliser une relation contenant-contenu stricte.
Le CLR n'a pas les contraintes requises pour modéliser des relations.
Le langage UML est trop abstrait. Il n'implémente pas les types de données ou la persistance des données.
La spécification XSD est trop différent des classes de langage de programmation et des schémas de base de données pour fournir un format neutre pour le mappage au CLR et aux modèles de bases de données relationnelles.
Mappage du modèle EDM au CLR et à des systèmes de gestion de base de données
Le modèle EDM mappe à la fois au CLR et à des bases de données relationnelles. Le CLR permet aux développeurs d'utiliser des données dans des formats de codage familiers. Les types de données dans du code mappent à des bases de données relationnelles, la norme éprouvée pour la persistance des données.
Pour implémenter le mappage entre des schémas, des langages de programmation et des tables de base de données, le modèle EDM utilise un mécanisme d'affichage indépendant du stockage qui tire parti de l'ingénierie des systèmes de gestion de base de données relationnelle. Les applications conventionnelles utilisent déjà des vues de base de données pour l'affichage et les mises à jour des données, mais la création de vues requiert souvent une syntaxe SQL complexe impliquant des jointures de table et des projections. Le mappage du modèle EDM entre les schémas et le stockage connecte les objets du code à la base de données par le biais d'un fournisseur de données ADO.NET.
Les services de données EDM ne dépendent d'aucun schéma de stockage particulier. Les applications qui requièrent plusieurs sources de données peuvent conserver des mappages individuels pour chaque source de données.
Plateforme de développement
Le modèle EDM prend en charge la conception d'application dans chaque phase de l'implémentation. Il prend en charge de nombreuses constructions existantes utiles, et sa conception utilise des concepts extraits de systèmes de modélisation de données bien définis tels que le modèle de base de données relationnelle, le modèle entité-relation et le CLR (Common Language Runtime).
Le modèle EDM modélise des fonctionnalités d'application complexes et capture de manière déclarative les relations sémantiques entre les objets programmables et le stockage de la base de données.
Le modèle EDM englobe les fonctionnalités du modèle de base de données relationnelle et l'étend en ajoutant des identités, des références et des relations à typage fort au niveau des entités.
La spécification EDM étant extensible, vous pouvez utiliser un sous-ensemble de celle-ci. Par exemple, une application ou une infrastructure peut utiliser des entités, des associations et des références, et ne peut pas utiliser l'héritage.
Le modèle EDM est extensible selon deux principes :
Les nouveaux types et les extensions aux types existants peuvent être définis à l'aide de l'héritage. Les applications peuvent définir des relations entre les types et à travers les limites des schémas.
Les extensions aux données existantes basées sur le modèle EDM n'affectent pas les fonctionnalités qui n'utilisent pas les extensions.
Le partage interapplication et interinfrastructure peut être réalisé en définissant des modèles de données d'application d'après le modèle EDM. L'espace de noms défini pour une application peut être utilisé à partir d'une autre application construite en fonction du modèle EDM.
Le modèle de requête est conçu pour être fermé en algèbre relationnel. Cela signifie que l'application d'opérateurs relationnels sur des concepts EDM retourne des résultats qui sont aussi dans le modèle EDM.
L'intégration du modèle EDM au CLR capture une sémantique de données polyvalente. Le système de type EDM mappe les déclarations dans les langages de programmation aux données se trouvant dans les structures de stockage sous-jacentes.
Les entités du modèle EDM sont logiquement indépendantes de l'implémentation de persistance utilisée. Le modèle de données ne régit aucun mappage ni aucune implémentation spécifique, et les entités peuvent être mappées à un large éventail de sources de données physiques. Le modèle EDM n'a pas pour but d'inclure dans une classification ou de remplacer le langage de définition de données (DDL) SQL Server.
Étapes de la conception
La conception et l'implémentation d'un modèle de données utilisant la spécification EDM implique trois phases de développement préliminaires. Chaque phase du processus est décrite ci-dessous, dans l'ordre.
Les entités et relations du domaine de l'application sont spécifiées dans un fichier XML.
Les métadonnées décrivant les structures de la base de données où seront stockées les données pour l'application sont spécifiées dans un deuxième fichier XML.
Les entités et relations du premier schéma sont mappées aux structures correspondantes de la base de données dans le fichier des métadonnées.
Le premier schéma représente une phase conceptuelle de développement dans laquelle les entités et les relations sont définies en utilisant une syntaxe XML appelée CSDL (Conceptual Schema Definition Language). Les fichiers de ce type portent l'extension .csdl. Pour plus d'informations sur la syntaxe CSDL, voir Schémas (EDM).
Le schéma de métadonnées de stockage utilise le langage SSDL (Store Schema Definition Language).
Le mappage de schémas conceptuels à des métadonnées de stockage utilise une troisième syntaxe XML appelée MSL (Mapping Specification Language). Pour plus d'informations sur le mappage d'entités et de relations ainsi que sur les types de schémas EDM, voir Schémas et spécification de mappage (Entity Framework).
Le schéma CSDL est utilisé pour générer le modèle objet programmable utilisée par le code d'application. Les langages qui prennent en charge le CLR (Common Language Runtime) peuvent utiliser le modèle objet créé par le processus de génération. Pour des exemples de code d'application, voir Exemples d'applications (Entity Framework).
Voir aussi
Concepts
Implémentation d'entités (EDM)
Implémentation d'associations (EDM)
Autres ressources
Spécifications EDM
Exemples d'applications (Entity Framework)