87 votes

Mot-clé source de données non pris en charge

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 survenus. J'ai dû installer SQL Server Management Studio, créer une nouvelle base de données, y importer toutes les données du fichier précédent .MDF. La seule chose qu'il me reste à faire (autant que je sache) est de changer la chaîne de connexion. Cependant, je ne suis pas vraiment expérimenté dans ce domaine et je continue de recevoir l'exception:

Clé non prise en charge : 'source de données'.

Voici ma chaîne de connexion:

Des idées sur ce qui ne va pas?

0 votes

J'ai eu cette erreur lorsque j'avais le mauvais projet de démarrage sélectionné, donc Visual Studio n'a pas pu trouver mes chaînes de connexion. Assurez-vous qu'un projet de démarrage avec app.config est sélectionné.

157voto

marc_s Points 321990

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

La chaîne de connexion EF ressemblerait à ceci :

Vous manquez tous les éléments metadata= et providerName= dans votre chaîne de connexion EF...... vous avez essentiellement seulement ce qui est contenu dans la partie provider connection string.

Utiliser le concepteur EDMX devrait créer une chaîne de connexion EF valide pour vous, dans votre fichier web.config ou app.config.

Je comprends ce que vous essayez de faire : vous avez besoin d'une deuxième chaîne de connexion "ADO.NET" juste pour la base de données utilisateur / d'adhésion ASP.NET. Votre chaîne est correcte, mais le providerName est incorrect - il devrait être "System.Data.SqlClient" - cette connexion n'utilise pas Entity Framework - ne spécifiez donc pas "EntityClient" pour cela !

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

Si vous avez besoin et spécifiez providerName=System.Data.SqlClient ==> chaîne de connexion traditionnelle ADO.NET pour SQL Server sans toutes les additions EF

0 votes

En fait, c'est le cas, mais alors je reçois l'exception Impossible d'ouvrir le fichier physique "C:\OVSS\Stavicky\trunk\Stavicky\App_Data\aspnetdb.mdf". Erreur système d'exploitation 5 : "5 (échec de la récupération du texte de cette erreur. Raison : 15105)". Une tentative d'attacher une base de données portant un nom automatique pour le fichier C:\OVSS\Stavicky\trunk\Stavicky\App_Data\aspnetdb.mdf a échoué. Une base de données portant le même nom existe, ou le fichier spécifié ne peut pas être ouvert, ou il est situé sur un partage UNC. De certaines sources, je pensais que c'était faux.. Merci quand même.

0 votes

Je ne suis pas sûr de comprendre le deuxième problème de chaîne de connexion. Dois-je laisser celle générée par le concepteur et ajouter le ASPNETMembership que vous m'avez écrit?

0 votes

Si vous avez vos entités dans le concepteur EDMX, celles-ci doivent être consultées au moyen d'un "EntityClient" et d'une chaîne de connexion EF. Si vous utilisez le système de membres ASP.NET "prêt à l'emploi", ce n'est PAS une partie de votre modèle EF ; donc, lorsque vous créez une chaîne de connexion pour votre base de données des membres ASP.NET, vous ne pouvez pas utiliser "EntityClient" comme fournisseur - utilisez SqlClient.

7voto

Baldy Points 2115

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

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

La chaîne de connexion basée sur zéro n'est pas toujours celle de votre fichier de configuration car elle hérite par défaut d'autres en amont de la pile.

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

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

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

2voto

developersatish Points 99

Je rencontrais le même problème.
mais ce code fonctionne bien essayez-le.

1voto

Hasiya Points 51

J'obtenais la même erreur, puis j'ai mis à jour ma chaîne de connexion comme ci-dessous,

Essayez ceci, cela résoudra votre problème.

0voto

Mubarak Points 11

J'ai rencontré ce problème lorsque j'ai commencé à utiliser Entity Framework, cela s'est produit lorsque je n'ai pas changé l'ancienne connexion au 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 j'ai dû faire ceci

        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;

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X