web-dev-qa-db-fra.com

Mot clé non pris en charge: "source de données" initialisant le contexte Entity Framework.

J'initialise le contexte d'objet Entity Framework, ce qui me donne le mot clé d'erreur non pris en charge:

metadata=res://*/MainDB.csdl|res://*/MainDB.ssdl|res://*/MainDB.msl;provider=System.Data.SqlClient;provider connection string="Data Source=.\SQLEXPRESS;AttachDbFilename=D:\Workspace\vs\Leftouch\Leftouch.Web\Data\Leftouch.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True;App=EntityFramework"

J'ai pris la chaîne de connexion directement à partir de web.config qui fonctionnait et je n'ai modifié que le chemin d'accès au fichier (que j'ai défini de manière dynamique). Au lieu d'utiliser la valeur par défaut, j'ai utilisé cette chaîne de connexion de manière explicite. Qu'est-ce qui pourrait causer cette erreur?

154
Can Poyrazoğlu

La vraie raison pour laquelle vous obteniez cette erreur est due aux valeurs " de votre chaîne de connexion.

Si vous remplacez ceux-ci par des guillemets simples, cela fonctionnera correctement.

http://blogs.msdn.com/b/rickandy/archive/2008/12/09/explicit-connection-string-for-ef.aspx

(Publié afin que les autres puissent obtenir le correctif plus rapidement que moi.)

306
Vaccano

J'ai résolu ce problème en remettant EntityClient à SqlClient, même si j'utilisais Entity Framework.

Donc, ma chaîne de connexion complète était au format:

<add name="DefaultConnection" connectionString="Data Source=localhost;Initial Catalog=xxx;Persist Security Info=True;User ID=xxx;Password=xxx" providerName="System.Data.SqlClient" />
33
Savage

Le bit providerName="System.Data.EntityClient" semble manquer. Tu es sûr de tout?

13
Craig Stuntz

Croyez-le ou non, le fait de renommer LinqPad.exe.config en LinqPad.config a résolu ce problème.

2
Sameer