Contexte-info:
J'utilise Microsoft Visual Web Developer 2010 Express.
Information sur mon (manque) d'expérience: le problème est survenu dans le premier tutoriel que j'essaie de travailler.
Quelques informations supplémentaires:
Description du problème:
J'essaie de suivre exactement les étapes du tutoriel "Intro to ASP.NET MVC 3" - et je rencontre un problème à la première étape de la partie 5 - Ajout le MoviesController:
Lorsque j'essaie d'ajouter le "MoviesController" avec les paramètres exacts qui sont affichés dans le didacticiel et cliquez sur "Ajouter", j'obtiens l'erreur suivante:
"Impossible de récupérer les métadonnées pour MvcMovie.Models.Movie. Impossible de trouver le fournisseur de données .Net Framework demandé. Il n'est peut-être pas installé."
Google a donné une tonne de résultats lors de la recherche de la phrase "Impossible de trouver le fournisseur de données .Net Framework demandé", mais rien n'a résolu le problème jusqu'à présent.
Ce que j'ai essayé:
Je pense que SQL-Server n'a pas été installé, je l'ai donc installé à partir de l'ISO de Visual-Studio Express - j'ai obtenu une erreur, puis j'ai exécuté une réparation à partir de l'ISO et il a affirmé que les 15 points, y compris la réparation de SQL Server Express et .NET 4 Framework a réussi.
J'ai exécuté The_.NET_Framework_Setup_Verification_Tool qui a réussi pour tout. http://blogs.msdn.com/b/astebner/archive/2008/10/13/8999004.aspx
Après la (ré) installation et la réparation mentionnées, j'ai recréé le projet et suivi chaque étape comme décrit dans le tutoriel et j'ai eu la même erreur.
J'ai trouvé que je devais rechercher DbProviderFactories dans machine.config,
Le root-Web.config du projet a les entrées suivantes
<connectionStrings>
<add name="MovieDBContext"
connectionString="Data Source=|DataDirectory|Movies.sdf"
providerName="System.Data.SqlServerCe.4.0"/>
Mon fichier de configuration de machine n'a qu'une seule entrée DbProviderFactories:
<DbProviderFactories>
<add name="Microsoft SQL Server Compact Data Provider" invariant="System.Data.SqlServerCe.3.5" description=".NET Framework Data Provider for Microsoft SQL Server Compact" type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=3.5.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"/></DbProviderFactories>
alors j'ai trouvé la citation suivante
"nous avons changé la façon dont DbProviderFactories.GetFactoryClasses () détermine les fournisseurs de framework dans VS2010. Ils ne sont plus répertoriés dans le fichier machine.config."
Question:
Alors peut-être que c'est la mauvaise direction et comme je ne sais pas quoi essayer ensuite, quelles mesures dois-je prendre pour enquêter et résoudre ce problème?
Btw. J'ai postgres installé, donc si utiliser postgres au lieu de SQL-server serait une solution facile, faites le moi savoir. Pour mes propres projets, je voudrais quand même utiliser une base de données différente (probablement des postgres), mais pour l'instant, je voudrais simplement pouvoir réussir le premier et apparemment simple tutoriel que j'ai essayé.
J'avais le même problème donc j'ai remplacé
<add name="MovieDBContext" connectionString="Data Source=|DataDirectory|Movies.sdf"
providerName="System.Data.SqlServerCe.4.0"/>
avec ce qui suit
<add name="MovieDBContext"
connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;database=Movies;User ID=sa;password="
providerName="System.Data.SqlClient"/>
Et cela a suffisamment fonctionné pour me permettre de continuer à travailler. Moi aussi, j'apprendrais finalement à faire fonctionner ce type d'applications avec mysql à un moment donné, mais pour l'instant cela devrait au moins vous aider à poursuivre le didacticiel.
Vous devez installer Microsoft SQL Server Compact 4. .
Si vous regardez la configuration, vous verrez que l'installation de SQL Server était un hareng rouge;
<add name="MovieDBContext"
connectionString="Data Source=|DataDirectory|Movies.sdf"
providerName="System.Data.SqlServerCe.4.0"/>
SqlServerCE n'est pas, je le crains, SQL Server complet, c'est SQL Server Compact Edition . J'aurais pensé que cela aurait été installé avec VS Express, mais vous pouvez télécharger les installateurs spécifiques à partir de ici
En fait, SQLServerCE et Express étaient installés, mais le didacticiel utilisait Compact Edition: ne étape dans la partie 4 du didacticiel consiste à ajouter explicitement la partie que vous avez citée au Web.config. C'est donc une partie du web.config par intention.
Mais la suppression de cette partie du web.config permet d'ajouter le Controller de la manière décrite dans le tutoriel. Bien que cela ne signifie plus exactement après le tutoriel, cela me convient. (Cela entraîne la création d'une base de données MvcMovie.Models.MovieDBContext dans SQL Server Express.)
La reconstruction du projet n'attrapera pas les erreurs de configuration dans la section DBContext ... le processus de construction ne passe pas par les connexions, vous pouvez donc construire toute la journée et toujours bombarder. Comme suggéré ci-dessus, corrigez la configuration de sorte que la chaîne de connexion corresponde à MachineName/SQLInstanceName/DBName avec la configuration SQL correcte. A très bien fonctionné en modifiant simplement mon web.config dans ma solution.
J'ai changé mon SQL providerName = "System.Data.SqlClient" dans web.config, car j'ai un client SQL ainsi que SQL compact installé sur mon système.
http://forums.asp.net/t/1679349.aspx/1 CypressBender
Re: Impossible de récupérer les métadonnées pour * Impossible de trouver le fournisseur de données .Net Framework demandé ... 08 août 2011 19:44 | LINK
J'ai installé Microsoft SQL Server Compact 4.0 et cela a résolu le problème pour moi. http://www.Microsoft.com/download/en/details.aspx?id=17876
Installez Microsoft SQL Server Compact 4.0. Le lien pour cela est - http://www.Microsoft.com/en-us/download/details.aspx?id=17876
Cela a fonctionné pour moi, j'espère que cela aide
<add name="MovieDBContext"
connectionString="Data Source=(local);Initial Catalog=Movies; Integrated Security=true;" providerName="System.Data.SqlClient" />
</connectionStrings>
J'avais un serveur. Il a exécuté des mises à jour Windows. Et un message en attente de redémarrage était ouvert. Après le redémarrage, cela a de nouveau fonctionné.
Essaye ça:
<add name="MovieDBContext"
connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|Movies.sdf;User Instance=true"
providerName="System.Data.SqlClient" />
Après avoir lu d'autres discussions sur le Web, j'ai trouvé une autre méthode. Si vous n'ajoutez la chaîne de connexion qu'après avoir créé la classe de contrôleur, cela fonctionnera également. Cela ressemble à un bug.
Ce que j'ai fait était de surmonter le premier problème que j'ai mis dans Web.config le code:
<add name="MovieDBContext"
connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Movies.sdf;Integrated Security=True"
providerName="System.Data.SqlClient"/>
Remarquez que je crée une base de données SQL CE 4, donc le .sdf et non le .mdf
Ensuite, vous devriez recevoir une autre erreur de connexion sur la page/Films, alors remplacez le code ci-dessus par:
<add name="MovieDBContext"
connectionString="Data Source=|DataDirectory|\Movies.sdf;"
providerName="System.Data.SqlServerCe.4.0" />
Et ça devrait aller.