Estou inicializando o contexto do Entity Framework Object, e isso me dá o erro de palavra-chave não suportada:
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"
Peguei a cadeia de conexão diretamente do web.config que estava funcionando e modifiquei apenas o caminho para o arquivo (que defini dinamicamente) e, em vez de usar o valor padrão, usei essa cadeia de conexão explicitamente. O que poderia causar esse erro?
entity-framework
connection-string
Can Poyrazoğlu
fonte
fonte
metadata=res:
, entãores=somethingelse
com"
toda a sintaxe do lugar - mas eles devem estar realmente felizes por não estarem na mesma sala que eu agora: - /Respostas:
O verdadeiro motivo pelo qual você estava recebendo esse erro é devido aos
"
valores em sua cadeia de conexão.Se você substituir por aspas simples, ele funcionará bem.
https://docs.microsoft.com/archive/blogs/rickandy/explicit-connection-string-for-ef
(Publicado para que outras pessoas possam obter a correção mais rapidamente do que eu.)
fonte
"
é uma sequência de escape para aspas porque é um caractere reservado no XML.Corrigi isso alterando
EntityClient
novamente paraSqlClient
, mesmo usando o Entity Framework.Portanto, minha cadeia de conexão completa estava no formato:
fonte
Parece estar faltando o
providerName="System.Data.EntityClient"
bit. Claro que você entendeu tudo?fonte
metadata=res://*/MainDB.csdl|res://*/MainDB.ssdl|res://*/MainDB.msl;provider=System.Data.SqlClient;provider name=System.Data.EntityClient;provider connection string="{0};App=EntityFramework"
e agora diz que a chave não foi encontrada: nome do provedor. Eu também tentei emproviderName=...
vez deprovider name=
também, mas sem sorte.EntityConnectionStringBuilder
classe e, estranhamente, está funcionando agora. Mas ainda não tenho idéia do por que não estava aceitando minha string, mesmo com suas adições.Acredite ou não, renomear LinqPad.exe.config para LinqPad.config resolveu esse problema.
fonte
Basta usar \ "em vez" ", isso deve resolver o problema.
fonte
Verifique se você possui
Data Source
e não estáDataSource
na sua cadeia de conexão. O espaço é importante. Confie em mim. Eu sou um idiota.fonte