web-dev-qa-db-fra.com

mot clé non pris en charge source de données

J'ai une application asp.net-mvc avec la base de données d'adhésion par défaut. J'y accède par ADO.NET Entity Framework. 

Maintenant, je veux le déplacer vers IIS, mais plusieurs problèmes sont apparus. Je devais installer SQL Server Management Studio, créer une nouvelle base de données, y importer toutes les données du fichier .MDF précédent. La seule chose qui reste à faire (pour autant que je sache) est de changer en chaîne de connexion. Cependant, je n'en ai pas vraiment l'expérience et je continue à avoir le mot-clé non pris en charge: "source de données". exception. Voici ma chaîne de connexion:

<add name="ASPNETDBEntities" 
     connectionString="Data Source=MONTGOMERY-DEV\SQLEXPRESS;Initial Catalog=ASPNETDB;Integrated Security=True;" 
     providerName="System.Data.EntityClient" />

Des idées, qu'est-ce qui ne va pas?

64
Trimack

Ce que vous avez est une chaîne de connexion ADO.NET valide - mais c'estPASune chaîne de connexion Entity Framework valide. 

La chaîne de connexion EF ressemblerait à ceci:

<connectionStrings> 
  <add name="NorthwindEntities" connectionString=
     "metadata=.\Northwind.csdl|.\Northwind.ssdl|.\Northwind.msl;
      provider=System.Data.SqlClient;
      provider connection string=&quot;Data Source=SERVER\SQL2000;Initial Catalog=Northwind;Integrated Security=True;MultipleActiveResultSets=False&quot;" 
      providerName="System.Data.EntityClient" /> 
</connectionStrings>

Il vous manque tous les éléments metadata= et providerName= dans votre chaîne de connexion EF ...... vous n'avez en gros que le contenu de la partie provider connection string.

L'utilisation du concepteur EDMX doit créer une chaîne de connexion EF valide dans votre fichier web.config ou app.config.

Marc

UPDATE: OK, je comprends ce que vous essayez de faire: vous avez besoin d’une deuxième chaîne de connexion "ADO.NET" destinée uniquement à la base de données d’utilisateurs/membres ASP.Net. Votre chaîne est correcte, mais nom_fichier est erroné - il devrait s'agir de "System.Data.SqlClient" - cette connexion n'utilise pas ENtity Framework - ne spécifiez pas "EntityClient" pour cela!

<add name="ASPNETMembership" 
     connectionString="Data Source=MONTGOMERY-DEV\SQLEXPRESS;Initial Catalog=ASPNETDB;Integrated Security=True;" 
     providerName="System.Data.SqlClient" />

Si vous spécifiez providerName=System.Data.EntityClient ==> Entity Framework chaîne de connexion (avec les métadonnées = et tout).

Si vous avez besoin et spécifiez providerName=System.Data.SqlClient ==> straight ADO.NET Chaîne de connexion SQL Server sans tous les ajouts EF

120
marc_s

Ce problème peut se produire lorsque vous référencez vos chaînes de connexion web.config (ou app.config) par index ...

var con = ConfigurationManager.ConnectionStrings[0].ConnectionString;

La chaîne de connexion de base zéro n'est pas toujours celle de votre fichier de configuration car elle hérite des autres par défaut de plus loin dans la pile .

Les approches recommandées sont d’accéder à votre connexion par nom ...

var con = ConfigurationManager.ConnectionStrings["MyConnection"].ConnectionString;

ou pour effacer d'abord l'élément connnectionStrings dans votre fichier de configuration ...

<connectionStrings>
    <clear/>
    <add name="MyConnection" connectionString="...
5
Baldy

Je commençais à avoir le même problème.
mais ce code fonctionne bien essayez-le.

<add name="MyCon" connectionString="Server=****;initial catalog=PortalDb;user id=**;password=**;MultipleActiveResultSets=True;" providerName="System.Data.SqlClient" />
2
Satish Singh

Je sais que ceci est un ancien post mais j'ai eu la même erreur récemment, alors pour ce que ça vaut, voici une autre solution:

Il s'agit généralement d'une erreur de chaîne de connexion. Veuillez vérifier le format de votre chaîne de connexion. Vous pouvez rechercher une "structure de connexion d'entité" ou suivre les suggestions ci-dessus.  

Cependant, dans mon cas, ma chaîne de connexion était correcte et l'erreur était due à quelque chose de complètement différent, alors j'espère que cela aidera quelqu'un:

  1. J'ai tout d'abord eu une erreur EDMX : il y avait une nouvelle table de base de données dans l'EDMX et la table n'existait pas dans ma base de données (ce qui est drôle, c'est que l'erreur n'était pas très évidente car elle n'était pas affichée dans la fenêtre de sortie, elle a été dissimulée dans Visual Studio dans la fenêtre "Liste des erreurs" sous "Avertissements"). J'ai résolu cette erreur en ajoutant la table manquante à ma base de données. Mais, en fait, j'étais occupé à essayer d'ajouter une procédure stockée et à obtenir l'erreur «source de données». Vous trouverez ci-dessous comment j'ai résolu le problème:

  2. Erreur de procédure stockée : J'essayais d'ajouter une procédure stockée et chaque fois que je l'ajoutais via la fenêtre de conception EDMX, j'avais une erreur 'source de données'. La solution consistait à ajouter la procédure stockée à blanc (j'ai conservé le nom et la déclaration de la procédure stockée, mais j'ai supprimé le contenu de la procédure stockée et je l'ai remplacé par «select 1», puis j'ai réessayé de l'ajouter à EDMX). Ça a marché! Vraisemblablement, EF n'a pas aimé quelque chose à l'intérieur de mon proc stocké. Une fois que j'ai ajouté le proc à EF, j'ai pu mettre à jour le contenu du proc dans ma base de données pour qu'il corresponde à ce que je voulais et cela fonctionne, l'erreur «source de données» étant résolue.

étrangeté

0
Spyder

J'ai eu ce problème lorsque j'ai commencé à utiliser Entity Framework, c'est-à-dire lorsque je n'ai pas modifié l'ancienne connexion du serveur SQL en connexion EntityFrameWork. 

Solution: Dans le fichier où la connexion est établie via le fichier web.config "add name =" Entities "connectionString = XYZ", Assurez-vous de faire référence à la connexion correcte, dans mon cas, I dû faire ça

        public static string MyEntityFrameworkConnection
    {
        get
        {
             return ConfigurationManager.ConnectionStrings["Entities"].ConnectionString;
        }

    }

appelez MyEntityFrameworkConnection chaque fois que la connexion doit être établie.

private string strConnection= Library.DataAccessLayer.DBfile.AdoSomething.MyEntityFrameworkConnection;

remarque: la connexion dans le fichier web.config sera générée automatiquement lors de l'ajout du modèle d'entité à la solution. 

0
Mubarak

Je recevais la même erreur, puis mis à jour ma chaîne de connexion comme ci-dessous,

<add name="EmployeeContext" connectionString="data source=*****;initial catalog=EmployeeDB;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />

Essayez ceci il va résoudre votre problème.

0
Hasiya