Meilleur auteur de réponses
Importation d'une source de données EF définie dans un projet extérieur à la solution courante

Question
-
Bonjour.
Contexte : VS 2010 Premium SP1.
Dans une page ASP.NET, je souhaite lier une GridView à une table via Entity Framework. Je me base pour ce faire le tutoriel http://www.asp.net/web-forms/tutorials/getting-started-with-ef/the-entity-framework-and-aspnet-getting-started-part-2.
Différence : le projet qui contient les classes Entity Framework est un projet extérieur à la solution en cours, et qui fait partie de ses références. J'essaie donc d'importer une source de données : menu Données / Ajouter une nouvelle source de données... / Objet. Le projet en cours et les projets référencés sont affichés. Je pénètre dans le projet qui m'intéresse et sélectionne FluideEntities, puis Terminer. La fenêtre de dialogue se ferme instantanément.
En mode design, je crée une EntityDataSource, je clique sur le petit bouton > / Configurer la source de données... Je déroule la liste Connexion nommée, et n'y trouve pas FluideEntities. Web.config ne contient aucune référence à cette source de données non plus.
Je constate aussi que mon menu Données est maintenant réduit : les sous-menus Afficher les sources de données et Ajouter une nouvelle source de données... ont disparu. La seule façon que je connaisse de les faire réapparaître est de quitter VS et de le redémarrer, mais de toute façon cela ne m'avance à rien.
Autre méthode : j'affiche l'onglet Sources de données. Les 4 icônes sont actives pendant une seconde, puis basculent en grisé et sont disable.
En continuant à chercher, je trouve un avertissement «L'élément 'urn:schemas-microsoft-com:xml-msdatasource:GenericObjectDataSource' n'est pas déclaré» dans un fichier caché My Project\DataSources\NjcFrance2.NjcFluide.FluideEntities.datasource. Que signifie ceci ? Google ne m'aide guère, sauf à effacer mon projet et à le recréer entièrement...
Bref, je sèche.
Merci de votre aide,
Gilbert
- Modifié Gilbert Tordeur vendredi 27 janvier 2012 10:31
Réponses
-
J’ai essayé reproduire pas à pas la procédure que vous avez suivie dans le premier message et le seul problème que j’ai identifié est le fait que la chaine de connexion du fichier Web.config n’est pas prise en compte si vous ne générez pas les deux projets avant essayer utiliser le control EntityDataSource. J’ai fait ça et j’ai pu voir FluideEntities de l’autre projet.
Concernant la question avec les deux entrées de sous-menu « Données » de ce que je vois sur http://msdn.microsoft.com/fr-fr/library/yft2c9ad.aspx « La commande Afficher les sources de données est uniquement disponible dans les projets qui prennent en charge la création et l'utilisation de sources de données » et je crois que les projets ASP.NET ne le prend pas en compte cette options. En fait, le tuto que vous avez suivi utilise une autre méthode pour construire le modelé. Donc je dirais plutôt que c’est une erreur que vous pouvez voir cette option dans le projet ASP.NET. Par contre, de que vous créez un projet libraire de classes et sélectionnez ce projet, l’option est de nouveau disponible.
Finalement, si la génération de projets ne fonctionne pas, vous pouvez essayer avec une réinstallation de VS.
Cordialement,
Cipri
Ciprian DUDUIALA, MSFT  
•Nous vous prions de considérer que dans le cadre de ce forum on n’offre pas de support technique et aucune garantie de la part de Microsoft ne peut être offerte.
- Marqué comme réponse Gilbert Tordeur mercredi 1 février 2012 15:43
-
Bonjour Ciprian,
Merci, ça y est !
En fait il faut :
- et définir la source dans le fichier Web.config (quitte à modifier ultérieurement son ConnectionString - à tester bientôt),
- et déclarer la connexion sur la page .aspx en mode design par la petite flèche > sur le contrôle plutôt que par le menu Données.
Merci et bonne soirée,
Gilbert
- Marqué comme réponse Ciprian Duduiala mercredi 1 février 2012 15:44
Toutes les réponses
-
Je vois, qu’il y a beaucoup de gens qui ont eu des problèmes avec l’utilisation du modèle Entity Framework à partir d’un projet libraire de classes (voir aussi cette discussion ). Vu que vous dites que le fichier Web.config ne contient pas une référence vers votre source de données, je me demande si vous avez respecté la procédure d’utiliser un modèle défini dans une bibliothèque de classes (Entity Data Model Tools). Comme vous pouvez voir, on vous recommande de copier et coller la section concernant les chaines de connexion du projet libraire de classes dans le fichier Web.config.
Cordialement,
Cipri
Ciprian DUDUIALA, MSFT  
•Nous vous prions de considérer que dans le cadre de ce forum on n’offre pas de support technique et aucune garantie de la part de Microsoft ne peut être offerte.
-
Bonjour Ciprian, et merci pour ta réponse.
Tu as raison, je n'ai pas copié la référence vers ma source de données dans le fichier de configuration. Je me souviens avoir fait cela durant mon apprentissage. mais aujourd'hui, tous mes programmes utilisent un web service pour obtenir leur chaîne de connexion, aucune chaîne de connexion ne figure dans le fichier de configuration. C'est beaucoup plus souple en cas de changement de base ou de serveur.
Suivant ton conseil, j'ai copié la section connectionStrings de la bibliothèque de classes vers mon projet, mais cela n'a absolument rien changé. Le problème reste identique.
En fait, quelque chose me semble même très curieux :
- Je ferme tous mes instances de VS.
- Je lance VS.
- Nouveau projet / Application Web ASP.NET / WebApplication1
- Menu Données / Afficher les sources de données. VS ouvre une fenêtre vide qui affiche « Il n'existe aucune source de données à afficher pour le projet sélectionné. »
- Je ferme cette fenêtre.
- Menu Données : les deux premières entrées de sous-menu ont déjà disparu !
Il y a vraiment un problème quelque part.
Gilbert
-
Comment faire pour m'en sortir ?
Désinstaller et réinstaller Visual Studio ?
Ou bien il est nécessaire de formater le disque dur et de réinstaller Windows puis tout le reste ?
Merci d'avance,
Gilbert
- Modifié Gilbert Tordeur mercredi 1 février 2012 10:27
-
J’ai essayé reproduire pas à pas la procédure que vous avez suivie dans le premier message et le seul problème que j’ai identifié est le fait que la chaine de connexion du fichier Web.config n’est pas prise en compte si vous ne générez pas les deux projets avant essayer utiliser le control EntityDataSource. J’ai fait ça et j’ai pu voir FluideEntities de l’autre projet.
Concernant la question avec les deux entrées de sous-menu « Données » de ce que je vois sur http://msdn.microsoft.com/fr-fr/library/yft2c9ad.aspx « La commande Afficher les sources de données est uniquement disponible dans les projets qui prennent en charge la création et l'utilisation de sources de données » et je crois que les projets ASP.NET ne le prend pas en compte cette options. En fait, le tuto que vous avez suivi utilise une autre méthode pour construire le modelé. Donc je dirais plutôt que c’est une erreur que vous pouvez voir cette option dans le projet ASP.NET. Par contre, de que vous créez un projet libraire de classes et sélectionnez ce projet, l’option est de nouveau disponible.
Finalement, si la génération de projets ne fonctionne pas, vous pouvez essayer avec une réinstallation de VS.
Cordialement,
Cipri
Ciprian DUDUIALA, MSFT  
•Nous vous prions de considérer que dans le cadre de ce forum on n’offre pas de support technique et aucune garantie de la part de Microsoft ne peut être offerte.
- Marqué comme réponse Gilbert Tordeur mercredi 1 février 2012 15:43
-
Bonjour Ciprian,
Merci, ça y est !
En fait il faut :
- et définir la source dans le fichier Web.config (quitte à modifier ultérieurement son ConnectionString - à tester bientôt),
- et déclarer la connexion sur la page .aspx en mode design par la petite flèche > sur le contrôle plutôt que par le menu Données.
Merci et bonne soirée,
Gilbert
- Marqué comme réponse Ciprian Duduiala mercredi 1 février 2012 15:44
-