Chaîne de connexion
1) Spécifier, dans le web.config, la connexion vers la base
<add name="local" connectionString="Data Source=LYRE\SQLEXPRESS;Initial Catalog=MonBlogMVC;Integrated Security=True" providerName="System.Data.SqlClient" />
Le fichier edmx
2) Dans le répertoire "Models", rajouter un nouvel élément de type ADO.Net Entity Data Model (en français ça doit ressembler beaucoup)

3) Choisir "generate from base" comme contenu

4) Choisir la chaîne de connection de l'étape 1 (sélectionnée par défaut)
5) Définir "McvBlogEntities" comme nom dans la case "save the connection settings...".
Attention : la légende porte très mal son nom, il ne s'agit pas que du nom dans la base, mais surtout du nom du repository de nos données, un peu l'équivalent du DataContext de LinQ-to-SQL

6) Cocher "Tables", pour importer uniquement les tables de notre base
7) Entrer "Models" comme namespace, afin que toutes les classes générées par Entity Framework soient accessibles dans MvcBlog.Models

C'est terminé. En allant vérifier dans le web.config, vous verrez une chaîne de connexion d'un genre un peu particulier.
Celle-ci contient notamment le chemin vers les 3 fichiers XML définissant le mapping avec la base de donnée, ici en ressource incluse dans un assembly
Pour en savoir plus : voir MSDN
<add name="MvcBlogEntities" connectionString="metadata=res://*/Models.MvcBlogModel.csdl|res://*/Models.MvcBlogModel.ssdl|res://*/Models.MvcBlogModel.msl;provider=System.Data.SqlClient;provider connection string="Data Source=LYRE\SQLEXPRESS;Initial Catalog=MonBlogMVC;Integrated Security=True;MultipleActiveResultSets=True"" providerName="System.Data.EntityClient" />
Votre modèle doit ressembler à ceci :

Renommage
Le nommage par défaut de nos entités de travail n'est pas satisfaisant. Les préfixes utilisés dans la base n'ont pas leur place dans notre code et les propriétés de navigation ne sont pas intuitives.
Entités et ensembles d'entités
8) En utilisant la fenêtre "Propriété" (F4), renommer toutes les tables (propriété Name) et tous les ensembles (propriété Entity Set Name)
Les "EntitySet" sont des propriétés qui nous permettront d'accéder à nos listes d'entités, pour un code clair et lisible, il est important que leur nommage soit intuitif.

Les propriétés de navigation (Navigation Properties) permettent d'accéder aux entités liées à une autre entité.
ex : le propriété TEM_Template dans l'entité blog est un accesseur vers l'instance du template associé à ce blog.
9) Renommer les propriétés de navigation avec des noms intuitifs, en faisant attentions aux cardinalité (fenêtre 'Propriété') et au mapping (fenêtre 'mapping')

A la fin, votre schéma doit ressembler au suivant.
A noter que si vous n'utilisez pas le même nommage, il vous faudra adapter votre code LinQ en fonction lors des étapes suivantes.

Le renommage est l'étape la plus fastidieuse de cette création de la couche donnée.
Néanmoins, ça permet d'avoir un aperçu complet de l'ensemble des associations entre les différentes entités que nous manipulerons ultérieurement.
Aucun commentaire:
Enregistrer un commentaire