AdventureWorks for HappyNet v1.2

Le projet HappyNet possède un écueil de taille ; la BD AdventureWorks n'est pas installée et du coup il ne fonctionne pas !

On trouvera dans la documentation que l'on peut trouver une version de la BD Ici.

HappyNet v1.2 où est la base de donnée ?

HappyNet utilise Entity Framework pour fournir un modèle de la base AdventureWorks ce modèle est utilisé ensuite par les services WCF Services de la partie Silverlight.

Ce modèle entity se touve dans :
\\HappyNet v1.2 - SL5
\HappyNet-SL5
\Server\Core\Soat.HappyNet.Server.Entities\EntitiesModel.edmx

Mais que faire pour mettre en oeuvre la BD ?

Je parcours le projet et trouve dans le fichier :
\\HappyNet v1.2 - SL5\HappyNet-SL5\
Server\Core\Soat.HappyNet.Server.Entities\App.Config

Je trouve une ConnectionString :

 <!-- /!\ INSTALL NOTE /!\ Fill in the correct configuration to access your database -->
<add name="AdventureWorks2008" connectionString="Database=AdventureWorks_Data;Server=MyServer;Integrated Security=True;User ID=Username;Password=Password" providerName="System.Data.SqlClient" />

Cela ne risque pas de fonctionner !

Remarques : 

Je trouve le découpage du projet un peu curieux ...
Quelque chose de plus classique aurait été de mettre la BD dans le répertoire App_Data :
\HappyNet-SL5\Web\Soat.HappyNet.WebSite\App_Data\AdventureWorks_Data.mdf

Et donc le modèle entity dans Soat.HappyNet.WebSite qui est l'application Web qui hoste le .xap.

Autre remarque au niveau découpage du projet, le code behind des services comme par exemple :
HappyNet-SL5\Web\Soat.HappyNet.WebSite\Services\HumanResourcesService.svc
Se trouve dans :
\HappyNet-SL5\Server\Service\Soat.HappyNet.Server.Services.HumanResources\ServiceLayer\HumanResourcesService.cs

Dans HappyNet on trouve dans le projet Soat.HappyNet.Server.Entities
\HappyNet-SL5\Server\Core\Soat.HappyNet.Server.Entities\App.Config

<add name="AdventureWorksModel" connectionString="metadata=res://*/EntitiesModel.csdl|res://*/EntitiesModel.ssdl|res://*/EntitiesModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=TRAININGSQL;Initial Catalog=AdventureWorks2008;Persist Security Info=True;User ID=Silverlight;Password=pouetpouet!;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" />

Cela ne risque pas de fonctionner sur votre machine de développement !

Trouver la bonne chaîne de connexion

Astuce pour trouver la bonne chaîne de connexion :
Sur le projet :
\HappyNet v1.2 - SL5\HappyNet-SL5\Server\Core\Soat.HappyNet.Server.Entities
Je fais :
Add->NewItem->ADO Entity Data Model->que je nomme AdventureWorks
Et je regarde regarde la chaîne de connexion générée, je trouve:

<add name="AdventureWorksModel" connectionString="metadata=res://*/EntitiesModel.csdl|res://*/EntitiesModel.ssdl|res://*/EntitiesModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=.\SQLEXPRESS;attachdbfilename=|DataDirectory|\AdventureWorks_Data.mdf;integrated security=True;connect timeout=30;user instance=True;multipleactiveresultsets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />

Cela me parait être mieux.

Malgré tout à l'exécution j'aurais toujours un "Acces Denied" !

Autres tentatives

J'ai essayé de générer la BD à partir du Modèle Entity, cela ne fonctionne pas non plus ... Il manque alors certaines procédures stockées ...
Je ne trouve pas le moyen d'exécuter la procédure de création d'un utilisateur ...
Lorsque je tente de me connecter j'obtients l'erreur suivante :

{ExceptionDetail, probablement créé par IncludeExceptionDetailInFaults=true, dont la valeur est :

System.Data.EntityException: The underlying provider failed on Open. 
----> System.Data.SqlClient.SqlException: Unable to open the physical file 
"HappyNet-SL5\Web\Soat.HappyNet.WebSite\App_Data\AdventureWorks_Data.mdf". 
Operating system error 5: "5(Accès refusé.)".

An attempt to attach an auto-named database for file 
\\HappyNet-SL5\Web\Soat.HappyNet.WebSite\App_Data\AdventureWorks_Data.mdf failed. 
A database with the same name exists, or specified file cannot be opened, or it is located on UNC share.

Sympathique comme erreur est ce que cela vient du répertoire où j'ai positionné la BD ?
Si j'essaye de la mettre dans :
\HappyNet-SL5\Server\Core\Soat.HappyNet.Server.Entities
Etant donné que d'autres projets font référence à celui-ci la BD est copiée autant de fois dans Bin et Debug et mon disque stature rapidement ...

J'arrête de perdre mon temps ...

Accès à la démonstration en ligne

A l'adresse suivante :

En cliquant sur le bouton "Ressources Humaines", on obtient le message "Access Denied" c'est rassurant :

HappyNet : Acces Denied
Vous avez certainement lu quelque part que l'on peut s'identifier avec demo/demo et ça fonctionne en effet :

HappyNet : Accès aux Ressources Humaines
Exécution dans chrome, accès à la partie Boutique :

HappyNet : Accès à la Boutique
Ca fonctionne ! Et Silverlight v5.0 est bien compatible avec Chrome.

Comment créer et authentifier un utilisateur ...

Conclusions

Oui c'est souvent le cas des projets Open Sources du Codeplex et surtout si vous avez derrière une société à but non lucratif, la Base de Donnée est très difficile à installer à configurée et souvent la "vraie" bd du projet n'est pas accessible facilement . Il faudra certainement faire appelle à leurs services moyennant quelques finances mais après tout c'est le jeux ...

Vous aurez remarqué au passage l'extrême lenteur d'exécution de ce type d'application, si vous avez une machine un peu ancienne, elle sera à genoux !

Je suis surpris de l'exécution dans le navigateur Chrome mais c'est une très bonne surprise. Après la disparition de Flash aucune nouvelles plateformes ne voulant plus installer son plug-in, on peut penser que les applications Silverlight ont encore un peu d'avenir.

Aucun commentaire:

Publier un commentaire

Pour plus d'interactivité, n'hésitez pas à laisser votre commentaire.