Alors comment réaliser une intégration rapide avec une couche présentation Silverlight, un accès aux données Entity Framework et des Reporting Services aux milieu de tout cela.
Je base mon exploration sur l'exemple du site CodeProject :
http://www.codeproject.com/Articles/97452/Integrate-Reporting-Services-with-Silverlight-and
Integrate Reporting Services with Silverlight and RIA Services
Dans le Projet ReportingServicesDemo.Web le répertoire App_Data est vide !
Mais où est la BD ? C'est toujours le même problème avec SQL Server les .mdf ne sont jamais livrés et vous trouvez cela normal ?
J'ouvre le fichier Web.config pour inspecter la partie "connectionStrings" du projet et là je peux lire :
Data Source=WSCORSIS032\SQLSERVER08;Initial Catalog=AdventureWorksLT2008;
Cela ne risque pas de fonctionner sur votre plateforme de développement.
Trouver la BD AdventureWorksLT2008
Initial Catalog me dit qu'il faut chercher une BD avec un nom du genre AdventureWorksLT2008 ...On la trouve facilement dans le CodePlex :
SQL Server BD AdventureWorksLT2008 |
J'utilise une version Express de SQL Server 2008 cela va-t-il fonctionner ?
Le projet Reporting Services with Silverlight
En gros, je vais essayer de :
- importer la BD AdventureWorksLT2008_Data dans le répertoire App_Data du projet
- modifier le fichier Web.config pour que la connectionStrings soit correcte
- effectuer une mise à jour du Modèle d'Entities
Import de AdventureWorksLT2008_Data dans le projet
Une fois le .zip téléchargé et dézippé. Dans mon projet ReportingServicesDemo.Web, je fais un "Add->Existing Item..." je pointe sur AdventureWorksLT2008_Data.mdf et j'importe dans le répertoire prévu à cet effet : App_Data. Me voilà avec la BD importée dans mon projet :Import de AdventureWorksLT2008 dans l'App_Data du projet ReportingServicesDemo.Web |
Mise à jour de l'ADO.NET Entity Data Model
Dans Visual Studio j'ouvre le fichier ADWLTModel.edmx (Entity Data Model). Je vais tenter une mise à jour du modèle depuis la BD :
ADWLTModel.edmx mise à jour depuis la BD |
ADWLTModel Mise à jour depuis la BD AdventureWorksLT2008 |
Quelle jolie boite de dialogues ! Je peux y voir déjà que Visual Studio aura repéré la BD que j'ai importé sur mon disque dur mais pas encore celle de mon projet.
Visual Studio me propose dans de mettre à jour la ConnexionString de mon fichier Web.config.
Mais soyons fou et modifiions cette chose là !
Je clique sur "New Connection..." :
Entity Data Model - New Connection ... |
\\ReportingServicesDemo\ReportingServicesDemo.Web\App_Data\AdventureWorksLT2008_Data.mdf
Je me retrouve avec une nouvelle chaîne de connexion :
ADWLTModel Mise à jour depuis la BD AdventureWorksLT2008 nouvelle chaîne de connexion |
On note le changement de SQL Server de SQL Server 2008 à SQLEXPRESS ...
On note également l'utilisation du |DataDirectory| ce qui est classique pour une application ASP.NET.
Je clique sur "Next..." :
Entity Data Model - Mise à jour depuis la BD importée dans App_Data |
Puis sur "Finish" ...
Grossière erreur, je viens d'ajouter les tables aux tables déjà existantes dans mon Modèle Entities (.edmx). Dans Visual Studio c'est la panique un rebuild du projet ReportingServicesDemo.Web me sort une séries d'erreurs incontrôlables.
Je passe par "Delete" "Refresh" bref ... :
Au bout d'un moment je sélectionne tous les objets du fichier ADWLTModel.edmx puis les supprime, sauvegarde le modèle qui est maintenant vide, je fais à nouveau un Add des Tables des Views et des Procédures stockées depuis ma base de données et le projet fonctionne :
Silverlight et Reporting Services - Exécution du projet après mise à jour du Modèle Entities |
Conclusion
Ce n'est pas si facile lorsque l'on est confronté pour la première fois à ce genre de chose. Par la suite et par la pratique, on prend de bonnes habitudes. On cesse de paniquer devant des erreurs incontrôlables et l'on reprend les choses simplement de façon propre.
L'idée c'est que ce qui est généré automatiquement doit être mise à jour automatiquement. Vous auriez pu par exemple mettre à jour la connexionString dans le Web.config manuellement cela aurait été une erreur de mon point de vu.
Si Ernesto Herrera avait utilisé le répertoire App_Data sont projet aurait été nettement plus portable car il aurait suffit d'importer AdventureWorksLT2008_Data.mdf dans ce répertoire pour que son projet fonctionne.
Download Sample
Requirements :
Visual Studio 2010
Silverlight v5.0
Reporting Services
Pour aller plus loin
Aucun commentaire:
Enregistrer un commentaire
Pour plus d'interactivité, n'hésitez pas à laisser votre commentaire.