Entity Framework - chaîne de Connexion mot - Clé pas supporté "Source de Données"
Je sais que c'est un problème commun rencontrées par les débutants en EF et il y a eu de multiples questions et réponses sur la même chose ici, mais je n'ai pas pu encore résoudre le problème.
Je suis en utilisant 4.1 EF et MVC 3 et ont généré le modèle EF de la DB dans une bibliothèque séparée. J'ai copié la chaîne de connexion à partir de l'app.config dans le soutien de la bibliothèque sur le web.config de mon application. Je suis aussi de l'instanciation de l'objet contexte en passant par le web.config chaîne de connexion.
string connectionString = System.Configuration.ConfigurationManager.ConnectionStrings["MasterDataContainer"].ConnectionString;
context = new MasterDataContainer(connectionString);
La chaîne de connexion dans le web.la config est comme ci-dessous
<connectionStrings>
<add name="MasterDataContainer" connectionString="metadata=res://*/MasterData.csdl|res://*/MasterData.ssdl|res://*/MasterData.msl;provider=System.Data.SqlClient;provider connection string="Data Source=.;Initial Catalog=MasterData;Integrated Security=True;MultipleActiveResultSets=True;Application Name=EntityFramework"" providerName="System.Data.EntityClient" />
</connectionStrings>
J'obtiens le message d'erreur "mot-Clé non pris en charge : de la source de données".
Toute aide est appréciée.
OriginalL'auteur Klaas Jan | 2012-08-24
Vous devez vous connecter pour publier un commentaire.
Vous n'avez pas besoin de la
EntityConnectionStringBuilder
puisque vous avez déjà un EF chaîne de connexion. c'est à dire justeEntityConnectionStringBuilder
peut être utilisé pour construire un EF de connexion provenant, par exemple, à la vanille .NET.Modifier
Il semble que vous ayez rencontré ce problème ici. La solution de contournement est d'échapper à la charge de la chaîne de connexion, puis de remplacer le
"
avec"'"
Ce qui pourrait être plus facile, est d'utiliser le
name=ConnStringName
surcharge de ObjectContext /DbContext. Dans votre cas, ce seraitRemarque aussi, si vous affichez la source de la générées Contexte (probablement
MasterDataContainer.Context.cs
) que le constructeur par défaut devrait avoir le EntityContainerName bien codé en dur en elle, de sorte que vous pourriez ne pas avoir besoin de fournir un connectionstring à tous pour le constructeur, à la condition de conserver le même EntityContainerName.http://msdn.microsoft.com/en-us/library/bb739017.aspx
J'ai fait un peu plus de devoirs - espérons que l'un de ces suggestions aideront.
Il s'avère que j'avais gardé le providerName SqlClient dans le web.config tout le long (j'avais copié la chaîne de connexion à partir de l'app.config pensant que j'avais collé exactement la même chose dans le web.config). Maintenant, j'ai corrigé et ça fonctionne. Mon Mauvais!. Merci beaucoup pour ces suggestions, en particulier la EntityContainerName. Ne le savais pas jusqu'à maintenant.
OriginalL'auteur StuartLC
façon la plus simple de résoudre ce problème est de réécrire votre EF conn chaîne (en remplacement de la amp; et quot;):
à partir de l'ORIGINAL
FIXE
Il suffit de changer alors Entités nom et les balises SERVEUR\INSTANCE et BDD avec vos valeurs et c'est tout.
J'espère que cela vous permet d'économiser quelques jours de recherche. Profitez-en!
OriginalL'auteur Pablo